Ruby on Railscallback,before_save和before_create之间有什么区别?

你能否详细解释:before_save:before_create Ruby on Railscallback是什么,以及Railsvalidation需要做什么? validation发生在:before_save:before_create吗?

在Rails的创build操作中,在数据库操作之前有六个callback,之后有两个callback。 为了这些,

  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 )。

从这里你可以看到validation是在before_savebefore_createcallback之前进行的。

before_save稍微在before_create之前发生。 据我所知,他们之间没有任何反应。 但before_save也会触发Update操作,而before_create只会触发Creates。

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

before_create仅在创build之前。 所以只适用于新对象(创build操作)

before_create vs before_save :on => :create

有时你必须小心callback的顺序

在这里看到更多的细节: http : //pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/