【发布时间】:2014-01-01 08:01:54
【问题描述】:
我有两个模型:计划和项目。项目 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 回调来发出通知。创建日程表时会显示“已创建新日程表”通知,更新时会显示“您的日程表已更新”通知。问题是在控制器中我使用@schedule.new 和@schedule.save,而不是@schedule.create。我需要更改我的控制器代码以使用 .create 以便 after_create 回调将起作用。我已经尝试过使用 after_save 回调,但是每当计划更新时都会调用它,因此它不起作用。
由于我定义@schedule 和@schedule,project 的方式,我无法弄清楚如何更改上面的代码以使用@schedule.create。有没有人有任何想法?谢谢。
【问题讨论】:
-
每个人都很好地回答了这个问题,但答案基本上导致了我在这里发布的另一个非常相似的问题:stackoverflow.com/questions/20569839/…。我仍在阅读答案,很快我会为这个问题选出一名获胜者。
标签: ruby-on-rails ruby oop callback ruby-on-rails-4