rails - 在.save上发生after_update以获取新对象

Phi*_*899 6 oop ruby-on-rails callback ruby-on-rails-4 rails-activerecord

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

class Schedule < ActiveRecord::Base
   after_save 'UserNotification.schedule_created(@user)'
   after_update 'UserNotification.schedule_updated(@user)'
end
Run Code Online (Sandbox Code Playgroud)

我错过了什么.我怎么才能让after_save只在我说@ schedule.save之后才发生,而after_update只发生在我执行@ schedule.update_attributes(...)之后?如果有帮助,这是控制器代码:

if @schedule.save   
    flash[:notice] = "Successfully created schedule."
    redirect_to profile_path(current_user.profile_name)  #change to project path later
end
Run Code Online (Sandbox Code Playgroud)

fiv*_*git 11

在引擎盖下,save调用create新记录和update持久记录.

after_save已创建和更新记录时都回调被调用.

after_createafter_update回调被称为新的和持久分别记录.

如果您只想在创建对象后运行after_save回调,after_create则需要将回调更改为.

有关ActiveRecord回调的更多信息,请参阅Rails文档.