after_validation
回调之前before_save
触发。如果有的话,这些回调之间会发生什么?为什么要选择一个而不是另一个?
问问题
4150 次
2 回答
12
有一个after_validation_on_update
或after_validation_on_create
取决于该项目是否是一个新记录。
before_save
并且正如 Max 所说,如果对象无效,则链在到达回调之前被中断,因此,如果您需要发生某些事情而不管对象的有效性before_save
是不是它的地方。
供参考: http ://apidock.com/rails/ActiveRecord/Callbacks/after_validation_on_create
于 2013-02-12T16:27:57.263 回答
3
after_validation_on_create
并after_validation_on_update
从 Rails 3.0 中删除。
新语法形式:
after_validation
after_validation, on: :update # or :update
after_validation, on: [ :create, :update ]
现在他们之间没有执行任何操作。
在答案中添加出色的评论:
“after_validation
如果你打电话就会被调用,#valid?
所以在某些情况下你可能只想检查记录的有效性,但在验证后仍然运行一些东西。根据我的经验,我从来没有机会使用after_validation
.” @jvnill
“除了 jvnill 所说的,如果对象无效,则不会保存对象。因此,对无效对象调用 save 不会触发before_save
回调,而会触发after_validation
。” @最大限度
于 2018-07-01T01:00:22.633 回答