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
回调。