brazilian-rails icon indicating copy to clipboard operation
brazilian-rails copied to clipboard

usar_como_cpf com conditional

Open izidorome opened this issue 12 years ago • 3 comments

Estou tentando fazer isso:

class Usuario < ActiveRecord::Base usar_como_cpf :documento, :if => :eh_pessoa_fisica?

def eh_pessoa_fisica? tipo_pessoa == 1 end end

Isso esta me gerando o seguinte erro:

undefined method `options' for #Class:0x00000006cd0a18

Stack Trace: activerecord (3.2.3) lib/active_record/dynamic_matchers.rb:50:in method_missing' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:31:inrescue in add_composed_class' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:28:in add_composed_class' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:18:inblock in init' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:17:in each' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:17:ininit' brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:8:in `usar_como_cpf'

izidorome avatar Aug 27 '12 19:08 izidorome

@rizidoro ao invés de usar o helper da gem. Você pode usar os custom validators fornecidos por ela. Exemplo:

validates :document, cpf: true, if: :eh_pessoa_fisica?
validates :document, cnpj: true, unless: :eh_pessoa_fisica?

def eh_pessoa_fisica?
  tipo_pessoa == 1
end

jonduarte avatar Mar 07 '13 22:03 jonduarte

por que não fazer assim: se o cpf estiver preenchido então é pessoa fisica se o cnpj estiver preenchido é pessoa juridica e colocar uma validação para tornar obrigatorio o preenchimento de um dos dois.

heber28 avatar Mar 07 '13 23:03 heber28

@heber28 acho que no caso do @rizidoro ele está usando o mesmo campo documento para cpf ou cnpj. Se entendi bem, a idéia é que o model Usuario pode ser tanto uma empresa, como uma pessoa. Logo, o campo documento ora é um CPF ora um CNPJ.

jonduarte avatar Mar 08 '13 00:03 jonduarte