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 
+0

就是这样的人!非常感谢! – MMeirelles 2013-04-05 04:28:14

你可以做这样的事情:

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