# 1.9.3p2-6ren">
gpt4 book ai didi

ruby - 保存后未真正调用 ActiveRecord 回调 after_save

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:00 25 4
gpt4 key购买 nike

有这个:

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 回调实际上是在保存对象之后调用

这种情况让我发疯,因为我必须执行一些脏对象回调的组合。

最佳答案

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

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

关于ruby - 保存后未真正调用 ActiveRecord 回调 after_save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14838196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com