Closed josuelima closed 12 years ago
Hum... eu não sei se gosto da idéia, acho que a validação fica muito "frouxa". Para ser sincero, eu raramente tenho usado o usar_como_cpf
ou o usar_como_cnpj
. O que tenho feito é usar algo como:
class Company < ActiveRecord::Base
validates :cnpj, :cnpj => true
end
Lembrando que essa forma de validação pode ser condicional, através do uso de um :if => :blabla
, onde :blabla é um método qualquer que retorna um booleano. Acredito que além do número de cpf/cnpj, deveriamos receber também mais alguma coisa (talvez em um atributo virtual) que indique se o objeto deverá ser validado como PF o PJ. Deixa isso livre e automaticamente validar como um ou outro eu acho que seria um pouco inseguro.
Sou da mesma opinião do @cassiomarques. Na verdade, estou quase matando os métodos usar_como_cpf e usar_como_cnpj e deixar apenas a abortagem com o novo esqueca de validações.
Como tinha dito, foi em um caso específico de projeto. Recebia varios relatorios em csv onde o codigo era cpf ou cnpj e precisava ser validado. Concordo que um atributo virtual resolveria esse problema, mas como não podia fazer alterações no layout que estava recebendo de outros sistemas, tive que optar por esse tipo de validação. Também é possível utilizar
validates :codigo, :cpf_ou_cnpj => true
Pensei em fazer uma validação condicional, como o @cassiomarques citou, mas ficaria um pouco mais pesado sair aplicando isso nos models e achei melhor transferir essa responsabilidade para a lib.
Bem, de toda forma compreendo que essa situação seja mais específica e fuja um pouco do escopo da gem.
[]
@josuelima Você pode sempre criar um module, colocar todo o esquema da validação condicional dentro dele e somente dar um include nos models que usam. Esses models não precisariam de nenhum código adicional para que essa validação funcionasse. Não acho que ficaria "pesado" e estaria suficientemente isolado e organizado.
@tinogomes +1 para matar isso.
Olá pessoal,
Essa implementação surgiu da necessidade que tive em um projeto de utilizar um atributo hora como cnpj hora como cpf (o cliente poderia ser pessoa física ou jurídica).
Ao usar "usar_como_cpf_ou_cnpj" é possível validar se o valor do atributo é cpf ou cnpj.
Esta é minha contribuição caso considerem útil adicionar ao projeto.
Abs.