ruby-on-rails - Rails - 如何将 .new/.save 更改为 .create

标签 ruby-on-rails ruby oop callback ruby-on-rails-4

我有两个模型:日程表和项目。 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/

相关文章:

arrays - 如何在 ruby​​ 数组中仅添加正数?

ruby - Integer === 3 如何工作?

c# - 作为服务定位器的通用静态类

ruby-on-rails - 如何在没有 SSL 证书的情况下设置定期付款选项?

javascript - rails 2 : RJS - Javascript events are not working when on page updates remotely

ruby-on-rails - 如何从 Rails 4.2.7.1 升级到 Rails 5.0.0.1?

javascript - 尝试从助手导入 HTML,但 Rails 不喜欢它

ruby - 如何在 Volt 中创建 jQuery 切换类?

php - 如何在 Drupal 8 上更新自定义用户字段

c# - 为什么在 Jon Skeet 的书中的这个例子中使用了 internal 关键字?