brazilian-rails
brazilian-rails copied to clipboard
usar_como_cpf com conditional
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:in
rescue 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:in
block 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:in
init'
brcpfcnpj (3.1.0) lib/brcpfcnpj/cpf_cnpj_activerecord.rb:8:in `usar_como_cpf'
@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
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 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.