繁体   English   中英

Ruby on Rails 回调,before_save 和:before_create 有什么区别?

[英]Ruby on Rails Callback, what is difference between :before_save and :before_create?

您能否详细解释一下 Rails 回调上的:before_save:before_create Ruby 是什么,以及它们与 Rails 验证有什么关系? 验证是否发生在:before_save:before_create

在 Rails 下的创建操作中,数据库操作之前有 6 个回调,之后有 2 个。 按顺序,这些是:

  1. before_validation
  2. before_validation_on_create
  3. after_validation
  4. after_validation_on_create
  5. before_save
  6. before_create

    数据库插入
  7. after_create
  8. after_save

更新操作具有完全相同的集合,除了读取update而不是到处create (以及UPDATE而不是INSERT )。

从中可以看出,验证是在before_savebefore_create回调之前进行的。

before_save发生在before_create之前。 据我所知,他们之间没有发生任何事情。 但是before_save也会在更新操作时触发,而before_create只会在创建时触发。

每次保存 object 时都会调用before_save 所以对于新的和现有的对象。 (创建和更新操作)

before_create仅在创建之前。 因此仅适用于新对象(创建操作)

before_create vs before_save:on =>:create

有时您必须注意回调的顺序

有关更多详细信息,请参见此处: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM