Ruby on rails RubyonRails回调,在保存之前和创建之前有什么区别?
你能详细解释一下什么是Ruby on rails RubyonRails回调,在保存之前和创建之前有什么区别?,ruby-on-rails,ruby,ruby-on-rails-3,validation,Ruby On Rails,Ruby,Ruby On Rails 3,Validation,你能详细解释一下什么是:在保存之前和:在创建之前RubyonRails回调,以及它们与Rails验证有什么关系吗?验证是否发生在:保存之前或:创建之前 在Rails下的创建操作中,在数据库操作之前有六个回调,在数据库操作之后有两个回调。依次为: 验证前的 在验证之前\u创建 验证后的 在验证之后\u创建 保存之前 创建之前 数据库插入 创建后的 保存后的 更新操作具有完全相同的集合,除了读取Update而不是create(以及Update而不是INSERT)之外 从中,您可以看到,验证是在bef
:在保存之前
和:在创建之前
RubyonRails回调,以及它们与Rails验证有什么关系吗?验证是否发生在:保存之前或:创建之前 在Rails下的创建操作中,在数据库操作之前有六个回调,在数据库操作之后有两个回调。依次为:
验证前的
在验证之前\u创建
验证后的
在验证之后\u创建
保存之前
创建之前
数据库插入
创建后的
保存后的
更新操作具有完全相同的集合,除了读取Update
而不是create
(以及Update而不是INSERT)之外
从中,您可以看到,验证是在before\u save
和before\u create
回调之前执行的
保存之前的发生在创建之前的之前。据我所知,他们之间没有发生任何事情;但是,before\u save
也会在更新操作时触发,而before\u create
只会在Creates时触发。before\u save
会在每次保存对象时调用。对于新对象和现有对象也是如此。(创建和更新操作)
创建之前
仅在创建之前。因此,仅适用于新对象(创建操作)在创建之前
vs在保存之前:打开=>:创建
有时,您必须注意回调的顺序
有关更多详细信息,请参见此处:
在保存之前:on=>:create
不起作用(至少在rails 3.2上),您可以使用:在保存之前:生成api密钥,:if=>:新建记录?
,相反,使用选项:on=>:create
,分别在验证前使用,和验证后使用。在保存后使用或创建后使用时,您将如何引用刚刚创建的记录?@bcackerman-在保存后或创建后回调中,self
是刚保存的记录,因为它在保存后存在。这包括自动生成的字段,如id
,created\u at
,updated\u at
。还要记住,在创建之前指的是保存到数据库中的新对象,而不是调用的实际create
方法。因此,即使从save
方法,在创建之前仍然可以触发。@Rads-er,否?文档在保存前仍会列出,在创建前仍会列出。