2014-02-27 88 views
0

在模型只會驗證我想要的東西,像下面如果其他在軌

validates :category, :presence => true if self.post = "this_is_post" 

是否有可能還是我必須使用鉤子方法之前保存這個檢查?

回答

3

這應該工作:

validates :category, :presence => true, :if => ->(a){ a.post == 'this_is_post' } 
+0

你能解釋一下這裏是什麼。在模型中,我使用self.post來訪問任何資源字段。 – asdfkjasdfjk

+0

@ user3128796如果你在這個':if'選項中傳遞了'Proc'對象,那麼它將被傳遞給它的模型對象(在我的例子中用'a'引用)來評估。所以你可以直接調用它'post',就像你使用'regular'對象一樣。 –

+0

@ user3128796還有什麼不清楚的地方嗎? –

0

這裏,不止一個代碼snippest在軌驗證條件:

class Person < ActiveRecord::Base 
    validates :surname, presence: true, if: "name.nil?" 
end 

=============== =========

validates :category, 
     :presence => true, 
     :if => :valid? 

def valid? 
    self.post == "this_is_post" 
end 

================

class Person < ActiveRecord::Base 
    validates :category, presence: true, if: "self.post.eql?('this_is_post')" 
end 
+0

最後一個不工作,但我看起來像最後一個 – asdfkjasdfjk