Rails:更新模型触发器after_save回调"on: :create"



Rails 4.1.8。

所以我有这个东西:

class Post < ActiveRecord::Base
  after_save :weak, on: :create
  def weak
    puts "lamerino"
  end
end

对吧?

So I fire rails控制台:

2.1.4 :008 > post = Post.create(name: "slow")
   (0.1ms)  begin transaction
   SQL (0.1ms)  INSERT INTO "posts"....
lamerino
post.name = "slow-mo"
post.save
2.1.4 :014 > post.save
   (0.1ms)  begin transaction
   SQL (0.2ms)  UPDATE "posts" SET ...
lamerino

可以看到"lamerino"被打印了两次。用于创建和更新操作。现在,我只想在create操作中打印这个。我以为通过on: :create会做那件事,但显然它没有。

我最终使用after_create :weak

我想知道为什么更新记录触发after_save :weak, on: :create回调。

这是因为只有验证回调才接受on

https://github.com/rails/rails/issues/12502

最新更新