我有两个模型:日程表和项目。 Project has_one Schedule 和 Schedule belongs_to Project。当我创建一个时间表时,我会:
def create
@schedule = Schedule.new(schedule_params)
@schedule.project = Project.find(params[:project_id])
if @schedule.save
flash[:notice] = "Successfully created schedule."
redirect_to profile_path(current_user)
end
end
这行得通。但是,我添加了一个 after_create 回调和一个 after_update 回调来发出通知。创建日程时会收到“新日程已创建”通知,更新时会收到“您的日程已更新”通知。问题是在 Controller 中我使用@schedule.new 和@schedule.save,而不是@schedule.create。我需要更改我的 Controller 代码以使用 .create,以便 after_create 回调将起作用。我已经尝试过使用 after_save 回调,但是每当更新计划时都会调用它,所以它不会起作用。
由于我定义@schedule 和@schedule,project 的方式,我不知道如何更改上面的代码以使用@schedule.create。有人有什么想法吗?谢谢。
最佳答案
after_create
将在第一次保存记录后触发,即。如果 @schedule.save
成功。无需专门将其更改为 create
而不是 new
。
关于ruby-on-rails - Rails - 如何将 .new/.save 更改为 .create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568413/