module ActAsCnpjCpf::CnpjCpfActiveRecord::ClassMethods

Public Instance Methods

add_composed_class(name, klass) click to toggle source

Adiciona reader e writer api.rubyonrails.org/classes/ActiveRecord/Aggregations/ClassMethods.html

# File lib/act_as_cnpj_cpf/cnpj_cpf_active_record.rb, line 21
def add_composed_class(name, klass)
  options = {class_name: klass, mapping: [name.to_s, 'numero'], allow_nil: true}
  cons    = Proc.new { |numero| klass.constantize.new(numero) }
  composed_of name, options.merge({constructor: cons, converter: cons})
end
create_validation(field, options) click to toggle source

cria validacao para o model

# File lib/act_as_cnpj_cpf/cnpj_cpf_active_record.rb, line 28
      def create_validation(field, options)
        <<-CODE
          validate :#{field}_vazio?, :#{field}_valido?

          def #{field}_vazio?
            self.errors.add('#{field}', :blank) if #{field}.nil? &&
                                                  !#{field}_permite_invalido?
          end

          def #{field}_valido?
            unless #{field}.nil?
              self.errors.add('#{field}', :invalid) unless #{field}.valido? ||
                                                           #{field}_permite_invalido?
            end
          end

          def #{field}_permite_invalido?
            #{options[:permite_invalido] || false}
          end

          private :#{field}_permite_invalido?
        CODE
      end
init(field, options, klass) click to toggle source
# File lib/act_as_cnpj_cpf/cnpj_cpf_active_record.rb, line 14
def init(field, options, klass)
  add_composed_class(field, klass)
  module_eval(create_validation(field.to_s, options))
end