你能否详细解释:before_save
和:before_create
Ruby on Rails回调是什么,以及它们与Rails验证有什么关系?验证是在:before_save
还是:before_create
之后进行的?
答案 0 :(得分:348)
在Rails下的创建操作中,在数据库操作之前有六个回调,之后有两个回调。按顺序,这些是:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
更新操作具有完全相同的设置,除了在任何地方阅读update
而不是create
(并且更新而不是 INSERT )。
通过此,您可以看到验证是在before_save
和before_create
回调之前执行的。
before_save
发生在before_create
之前。据我所知,他们之间没有任何事情发生;但before_save
也会触发更新操作,而before_create
只会触发创建。
答案 1 :(得分:128)
before_save
。所以对于新的和现有的对象。 (创建和更新操作)
before_create
仅在创建之前。所以只适用于新对象(创建动作)
答案 2 :(得分:2)
before_create
vs before_save :on => :create
有时你必须小心回调的顺序
<击> 有关详细信息,请参见此处 http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/ 击>