Rails - 在保存之前计算属性
问题描述:
我有一个aluno类,它具有:telefone属性。我想限制3次相同的电话号码。在telefone列中可能有3个telefone号码。Rails - 在保存之前计算属性
在我创建一个新的aluno之前,我将不得不检查是否已经有3个具有相同电话号码的alunos。
这将是像Max 3个telefones已经达到了 “
我怎么会做一个“FROM alunos其中telefone = '_FORM.telefone'
如果计数= 3 消息SELECT COUNT(telefone)”是什么?
谢谢大家!
答
是的,你需要在你的模型来创建一个自定义的验证。它看起来像下面。
class Aluno < ActiveRecord::Base
...
validate :there_are_three_max_telefone
def there_are_three_max_telefone
alunos = Aluno.find_all_by_telefone(telefone)
if alunos.count >= 3
errors[:base] << "Max 3 telefones already reached"
end
end
end
答
你可以做这样的事情:
a = alunos.find_all_by_telefone(params[:telefone])
if a.count >= 3:
message = "Max reached"
else:
entity.save
答
我会用一个自定义的方法,此验证。像这样的东西应该进入你的Aluno模型。
validate :telefone_count
def telefone_count
tele_count = Aluno.where(telefone: telefone).count
if tele_count >= 3
errors.add(:telefone, "Already 3 or more with the same telefone.")
end
end
就是这样的人!非常感谢! – MMeirelles 2013-04-05 04:28:14