2013-02-11 51 views
13

after_validation回調在before_save之前觸發。這些回調之間會發生什麼,如果有的話?爲什麼會選擇一個在另一個之上?after_validation和before_save之間會發生什麼?

+2

'after_validation'也會在調用''#valid調用,所以有可能是情況下,您只需要檢查記錄的有效性,但仍運行驗證後的東西。根據我的經驗,我從來沒有機會使用'after_validation'。 – jvnill 2013-02-11 00:55:23

+2

除了jvnill所說的之外,如果一個對象無效,它就不會被保存。因此,調用保存在一個無效的對象上不會觸發'before_save'回調,而它會觸發'after_validation'。 – Max 2013-02-11 03:42:07

回答

12

有一個after_validation_on_updateafter_validation_on_create取決於如果該項目是一個新的記錄。

並且如Max所述,如果對象無效,則鏈在其到達before_save回調之前被中斷,因此如果需要發生某些事情而不管該對象的有效性如何,before_save並不適合它。

參考:? http://apidock.com/rails/ActiveRecord/Callbacks/after_validation_on_create

相關問題