Skip to content
This repository has been archived by the owner on Mar 11, 2019. It is now read-only.

Rails 4 não é possível combinar usar_como_cpf com a validação uniqueness #66

Open
jorgevilaca82 opened this issue Jan 17, 2014 · 9 comments

Comments

@jorgevilaca82
Copy link

TypeError in PessoaFisicasController#update
"can't cast Cpf to string"

"if @pessoa_fisica.update(pessoa_fisica_params)"

Erro ocorre ainda no passagem de parâmetros no controller para o model.
Só ocorre quando existe uma validação do tipo uniqueness associada

ex:

validates :cpf, uniqueness: true, :if => "cpf.valido?"
usar_como_cpf :cpf
@rogeriochaves
Copy link

Mesma coisa aqui, no momento eu resolvi esse problema fazendo a validação manualmente:

validate :cpf_unico

def cpf_unico
    if self.cpf and !self.cpf.to_s.empty? and Usuario.where(cpf: self.cpf).where('id <> ?', self.id || 0).first
      errors.add(:cpf, "já está sendo usado")
    end
end

@fbbergamo
Copy link

Mesmo problema, alguém entendeu porque tá dando esse erro? O cast do cpf para string tá funcionando normalmente.

@rafaizidoro
Copy link

Mesmo erro aqui... o ActiveRecord está verificando o tipo do campo para fazer conversões caso o banco utilizado não suporte o tipo.
https://github.com/rails/rails/blob/294d418f4ca44dd5a454b2e27b79dbb8f1251d85/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb#L78

No caso, a gem está criando um tipo Cpf, e este tipo não existe nesse método type_cast...

@rafaizidoro
Copy link

Caso necessitem apenas da validação de CPF, essa gem funciona perfeitamente com o Rails 4: https://github.com/sobrinho/cpf_validator

@diegoqlima
Copy link

Pessoal,
Consegui resolver este problema da seguinte maneira:

validates :cpf, presence: true, uniqueness: true, cpf: true

A mesma solução quando for cnpj

validates :cnpj, presence: true, uniqueness: true, cnpj: true

@jorgevilaca82
Copy link
Author

Legal,
Mas minha regra diz que -só- será verificado se é único -se- for válido. :/
Assim ele só vai executar uma validação se passar pela outra

@diegoqlima
Copy link

Verdade, desculpe pela falsa afirmação.
Estou verificando outra forma.

@breim
Copy link

breim commented Jul 10, 2014

Mesmo problema, com CNPJ.. alguém chegou na solução ?

@breim
Copy link

breim commented Jul 10, 2014

Acabei de resolver meu problema com essa gema https://github.com/rfs/validates_cpf_cnpj
Abraço!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants