我只需要驗證某個動作的模型(:create)。我知道這不是一個好策略,但我只需要在我的情況下這樣做。驗證某個動作的模型
我嘗試使用類似:
validate :check_gold, :if => :create
或
validate :check_gold, :on => :create
,但我得到的錯誤。問題是我不能讓我的自定義check_gold驗證在編輯時執行,但只能在創建時執行(因爲只有在創建聯盟時才進行檢查,而不是編輯)。
感謝名單閱讀:)
我追加了一些實際代碼:
attr_accessor :required_gold, :has_alliance
validate :check_gold
validate :check_has_alliance
這是該聯盟的模式。 :required_gold和:has_alliance都在控制器中設置(它們是虛擬屬性,因爲我需要來自控制器的信息)。現在,實際的驗證程序是:
def check_gold
self.errors.add(:you_need, "100 gold to create your alliance!") if required_gold < GOLD_NEEDED_TO_CREATE_ALLIANCE
end
def check_has_alliance
self.errors.add(:you_already, "have an alliance and you cannot create another one !") if has_alliance == true
end
這個偉大工程的創建,但我想限制它來創建單獨,而不是編輯或支架的其他行動。
http://guides.rubyonrails.org/active_record_validations_callbacks.html#on它應該工作。你可以顯示代碼如何編輯你的模型? – tjeden 2010-11-25 21:39:10
我編輯了帖子來顯示我的代碼,thanx :) – Spyros 2010-11-25 22:46:42