Ruby on Rails回调,:在_保存之前和:在_创建之前有什么区别?

您能否详细解释一下:before_save:before_create Ruby on Rails回调是什么,以及它们与Rails验证有什么关系?是否在:before_save:before_create之后进行验证?

81310 次浏览

在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(以及更新而不是插入)。

由此,您可以看到,验证是在before_savebefore_create回调之前执行的。

before_save出现在before_create之前。据我所知,他们之间什么也没发生。但before_save也会在更新操作时触发,而before_create只会在创建时触发。

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

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

before_createbefore_save :on => :create

有时你必须注意回调的顺序。

更多详情请看这里: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/.