2013-02-11 60 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

相关问题