2014-01-05 106 views
1

我在我的用戶模型編寫可選的驗證。基於哪個用戶註冊步驟。我剛剛開始構建它。我得到的錯誤是:驗證在軌3

You need to supply at least one attribute 

我增加了一個驗證,以我的模型:

with_options :if => lambda { |u| u.current_step == "first" } do |user| 
    user.validates :preference_missing? => true 
end 

如果我更改爲:

with_options :if => lambda { |u| u.current_step == "first" } do |user| 
    user.validates :preference_missing? 
end 

我仍然得到同樣的錯誤。但是,如果我將其更改爲:

validate :preference_missing? 

我沒有得到關於提供至少一個屬性的錯誤。但是由於我對每一步都進行了驗證,所以這將起作用,但工作不正確。

有人能指出我在哪裏犯錯與當前的驗證?

我的首選方法是:

private 
def preference_missing? 
    unless self.certificate? || self.ownership? || self.other? 
     self.errors.add(:your_preference, "must be filled in.") 
    end 
end 

回答

0

這裏是你如何能符合條件做你的自定義驗證:

validate :preference_missing?, if: -> { current_step == "first } 

希望幫助!