2010-07-21 43 views
2

我想創建用戶特定的驗證。ActiveRecord:用戶特定的驗證

用戶有一個名爲「rule_values」的列,它是一定數量的序列化散列。

在一個單獨的模型,美孚,我有一個驗證:

class Foo < ActiveRecord::Base 
    belongs_to :user 

    n = self.user.rule_values[:max_awesome_rating] #this line is giving me trouble! 
    validates_presence_of :awesome_rating, :in => 1..n 
end 

看來,自我是指美孚(這就是爲什麼我得到一個未定義的方法錯誤),而不是富的一個實例。我如何從Foo模型中訪問User實例?

回答

1

如何在Foo上創建自定義驗證?

class Foo < ActiveRecord::Base 

    validate do |foo| 
    n = foo.user.rule_values[:max_awesome_rating] 
    unless (1..n).include? foo.awesome_rating 
     foo.errors.add :awesome_rating, "must be present and be between 1 and #{n}" 
    end 
    end 

end 

這種方式,您可以訪問實例和用戶協會

+0

使用塊的獎勵積分。好工作,每個人!謝謝! – user94154 2010-07-22 14:59:45

1

Rails的支持(使用validate)定製的檢驗。下面是它如何工作的想法(雖然沒有檢查它):

​​