これを持っている:
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 objects
てcallbacks
います。