【问题标题】:ActiveRecord callback after_save not really called after saved保存后未真正调用 ActiveRecord 回调 after_save
【发布时间】:2013-02-12 17:24:33
【问题描述】:

有这个:

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 语句应该被称为 never,因为在对象被保存之后它并没有改变

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 的一些组合让我发疯了,我必须这样做。

【问题讨论】:

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


【解决方案1】:

在保存之后提交之前。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多