我有一个具有 :telephone 属性的类 aluno。我想将同一个电话号码限制在 3 次。:telephone 列中只能有 3 个电话号码。
在我创建一个新的 aluno 之前,我必须检查是否已经有 3 个 aluno 使用同一部电话。
这就像一个“SELECT count(telephone) FROM alunos where phone = '_FORM.telephone'
如果 count = 3 消息“已到达最多 3 部电话”
我该怎么做?
我有一个具有 :telephone 属性的类 aluno。我想将同一个电话号码限制在 3 次。:telephone 列中只能有 3 个电话号码。
在我创建一个新的 aluno 之前,我必须检查是否已经有 3 个 aluno 使用同一部电话。
这就像一个“SELECT count(telephone) FROM alunos where phone = '_FORM.telephone'
如果 count = 3 消息“已到达最多 3 部电话”
我该怎么做?
是的,您需要在模型中创建自定义验证器。它看起来像下面这样。
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