0
我正在使用before_validation在模型進行驗證並稍後保存之前對模型進行一些更新。Rails 2.3.8:在保存和驗證之前會發生回調(即使沒有驗證)
顯然,驗證回調沒有在未經驗證的情況下保存時調用。
我應該使用什麼回調來確保此代碼在驗證前保存和之前是否運行?
我正在使用before_validation在模型進行驗證並稍後保存之前對模型進行一些更新。Rails 2.3.8:在保存和驗證之前會發生回調(即使沒有驗證)
顯然,驗證回調沒有在未經驗證的情況下保存時調用。
我應該使用什麼回調來確保此代碼在驗證前保存和之前是否運行?
跳過驗證聽起來像是一種解決方法。如果您不想驗證的情況下,您最好有條件地調用驗證。這樣它也是可測試的。
這似乎很哈克,但...
def save
do_something
super
end
跳過驗證究其原因,是因爲有些車型與驗證僵持在一起(一個無效的其他改變之前,反之亦然)。 因此,您保存兩個模型沒有驗證,只有然後運行驗證(所有內部交易)。 – Nadav 2012-02-16 13:52:52
順便說一句,這是否意味着Rails不支持在驗證*和*保存之前會發生的回調? – Nadav 2012-02-16 14:57:54
據我所知,沒有。 Rails API按照它們可用的順序列出了可用的回調函數:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – 2012-02-16 15:53:58