保存后,ActiveRecord回调after_save没有真正调用

时间:2013-02-12 17:24:34

标签: ruby ruby-on-rails-3 activerecord callback

有这个:

class User < ActiveRecord::Base
  after_save :execute_after_save

  def execute_after_save
    Kernel.puts "Actual object still not saved" if changed?
  end
end

Kernel.puts句子应该被称为从不,因为在保存对象后,

1.9.3p286 :003 > u = User.create!(:name => "Wadus Name")
Actual object still not saved
 => #<User id: 1, name: "Wadus Name"> 
1.9.3p286 :004 > u.changed?
 => false 
1.9.3p286 :004 > u.name = "Other Name"
 => "Other Name" 
1.9.3p286 :005 > u.changed?
 => true 
1.9.3p286 :006 > u.save!
Actual object still not saved
 => true 
1.9.3p286 :007 > u.changed?
 => false 

查看不应存在的所有Actual object still not saved句子。

我希望在保存对象后,after_save回调实际上被称为

这种情况让我感到疯狂,我需要做dirty objectscallbacks的一些组合。

1 个答案:

答案 0 :(得分:6)

它是在保存之后但在提交之前。

after_commit可能是您正在寻找的东西。