Acabei de atualizar do rails 2.3 para 3, eu estou tentando substituir este método antigo com algo mais limpo, porque ele está produzindo o nome do modelo e do campo, wtf!
No entanto, recebo o erro acima ao chamar validates_uniqueness_of (a presença funciona bem). Eu passei no escopo do ID primário e ainda o recebo. Qualquer ajuda é bem vinda.
def validate
if org_name.blank?
errors.add(:org_name, :blank, :default => nil)
else
if (org = Organization.find_by_org_name(org_name)) && org != self
errors.add(:org_name, :taken, :default => nil, :value => org_name)
end
end
end
para
validates :org_name, :presence => true
validates_uniqueness_of :org_name, :scope => :org_id
Respostas:
1 para resposta № 1Ths é a sintaxe do Rails 3 para validação de exclusividade:
valida: org_name, uniqueness: {scope:: org_id}
0 para resposta № 2
Isso é fácil de consertar.
Em primeiro lugar, analise a mensagem de erro:
Falha na tradução do nome da organização: en.activerecord.errors.models.user.attributes.org_name.blank
Isso é causado pela seguinte linha de código:
errors.add(:org_name, :blank, :default => nil)
Quando você liga para o acima, você está dizendo para procurar uma tradução cuja chave é :blank
. Você provavelmente não configurou isso ainda, então, para fazer isso, basta acessar o arquivo locales (config / locales / en.yml) e adicionar o seguinte:
en:
hello: "Hello world"
activerecord:
errors:
models:
organization:
attributes:
org_name:
blank: "can"t be blank."
Espero que isso conserte isso para você.