我有一个aluno类,它有:telefone属性。我想限制3次相同的电话号码。只需3个电话号码即可:telefone column。
在我创建一个新的aluno之前,我必须检查是否已经有3个具有相同电话的alunos。
这就像是一个“SELECT count(telefone)FROM alunos,其中telefone ='_FORM.telefone'
如果count = 3 消息“已达到最多3个电话”
我该怎么做?
全部谢谢!
答案 0 :(得分:2)
是的,您需要在模型中创建自定义验证器。它看起来像下面。
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
答案 1 :(得分:0)
您可以这样做:
a = alunos.find_all_by_telefone(params[:telefone])
if a.count >= 3:
message = "Max reached"
else:
entity.save
答案 2 :(得分:0)
我会使用自定义方法进行此验证。这样的东西应该进入你的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