2

我有一个具有 :telephone 属性的类 aluno。我想将同一个电话号码限制在 3 次。:telephone 列中只能有 3 个电话号码。

在我创建一个新的 aluno 之前,我必须检查是否已经有 3 个 aluno 使用同一部电话。

这就像一个“SELECT count(telephone) FROM alunos where phone = '_FORM.telephone'

如果 count = 3 消息“已到达最多 3 部电话”

我该怎么做?

4

3 回答 3

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
于 2013-04-05T04:20:53.887 回答
0

你可以这样做:

a = alunos.find_all_by_telefone(params[:telefone])
if a.count >= 3:
   message = "Max reached"
else:
   entity.save
于 2013-04-05T04:25:13.280 回答
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
于 2013-04-05T04:29:42.907 回答