gpt4 book ai didi

ruby-on-rails - rails - after_update 发生在新对象的 .save 上

转载 作者:行者123 更新时间:2023-12-04 13:50:52 25 4
gpt4 key购买 nike

我有两个模型:UserNotification 和 Schedule。创建计划时,会创建一种类型的用户通知(第一行代码)。更新计划时,会创建另一种类型的用户通知(第二行代码)。出于某种原因, after_update 在保存后发生(我只希望它在更新后发生)。这是代码中的代码:

class Schedule < ActiveRecord::Base
after_save 'UserNotification.schedule_created(@user)'
after_update 'UserNotification.schedule_updated(@user)'
end

我是不是错过了什么。如何让 after_save 只在我说 @schedule.save 和 after_update 只在我做 @schedule.update_attributes(...) 之后发生?如果有帮助,这是 Controller 代码:
if @schedule.save   
flash[:notice] = "Successfully created schedule."
redirect_to profile_path(current_user.profile_name) #change to project path later
end

最佳答案

在引擎盖下,save电话create创下新纪录,以及 update在持久的记录上。
after_save创建和更新记录时都会调用回调。
after_createafter_update分别在新记录和持久记录上调用回调。

您需要更改您的 after_save回调到 after_create如果您只希望它在创建对象后运行。

更多关于 ActiveRecord 回调的信息可以在 the Rails documentation 中找到.

关于ruby-on-rails - rails - after_update 发生在新对象的 .save 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555857/

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