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