2013-04-05 68 views
2

我有一個aluno類,它具有:telefone屬性。我想限制3次相同的電話號碼。在telefone列中可能有3個telefone號碼。Rails - 在保存之前計算屬性

在我創建一個新的aluno之前,我將不得不檢查是否已經有3個具有相同電話號碼的alunos。

這將是像Max 3個telefones已經達到了 「

我怎麼會做一個「FROM alunos其中telefone = '_FORM.telefone'

如果計數= 3 消息SELECT COUNT(telefone)」是什麼?

謝謝大家!

回答

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

就是這樣的人!非常感謝! – MMeirelles 2013-04-05 04:28:14

0

你可以做這樣的事情:

a = alunos.find_all_by_telefone(params[:telefone]) 
if a.count >= 3: 
    message = "Max reached" 
else: 
    entity.save 
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