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

时间:2015-10-02 15:31:29

标签: ruby-on-rails ruby-on-rails-4

Rails 4.1.8。

所以我有这个东西:

class Post < ActiveRecord::Base
  after_save :weak, on: :create

  def weak
    puts "lamerino"
  end
end

右?

所以我开火了控制台:

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

正如你所看到的那样&#34; lamerino&#34;被打印了两次。用于创建和更新操作。现在,我只希望只为create操作打印它。我认为传递on: :create会做那件事,但显然它没有。

我最终使用after_create :weak

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

1 个答案:

答案 0 :(得分:1)

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

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