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

Agu*_*tyo 176 ruby validation ruby-on-rails ruby-on-rails-3

能不能详细解释一下什么是:before_save:before_createRuby on Rails的回调是,他们有使用Rails验证该怎么办?验证是在:before_save或之后进行的:before_create吗?

Cho*_*ett 357

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

  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也会触发Update操作,而before_create只会触发Creates.

  • [`before_validation_on_create`和`after_validation_on_create`从Rails 3中删除](http://guides.rubyonrails.org/v3.2.9/active_record_validations_callbacks.html#available-callbacks),而不是分别使用`before_validation`和`after_validation`选项`:on =>:create`. (27认同)

Mic*_*per 131

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

before_create只有在创作之前.所以只对新对象(创建动作)