Rails after_save 错误

Posted

技术标签:

【中文标题】Rails after_save 错误【英文标题】:Rails after_save error 【发布时间】:2013-11-08 17:26:02 【问题描述】:

这是使用 after_save 回调的正确方法吗?

class CouponsController < ApplicationController
after_save :remove_restrictions
 private
    def remove_restrictions

      logger.debug("in after save")
    end

end

此代码将错误抛出为

undefined method `after_save' for CouponsController:Class

使用 after_save 的正确方法是什么?

【问题讨论】:

把你的后保存在你的模型中 @rubyist - 如果您想将此作为答案,我将删除我的。我想我们差不多同时回答了。 【参考方案1】:

app/models/coupon.rb

class Coupon < ActiveRecord::Base
  # after_save goes to your model
  after_save :remove_restrictions

  private

  def remove_restrictions
    logger.debug("in after save")
  end
end

app/controllers/coupon_controller.rb

class CouponController < ApplicationController
  # after_filters goes to your controller
  after_filter :remove_restrictions

  private

  def remove_restrictions
    logger.debug("in after filters")
  end
end

【讨论】:

哎呀我的坏!现在明白了,谢谢 顺便说一句,我可以在 after_save 回调中查询记录吗? 我的意思是我可以在模型回调中编写控制器代码,例如“@list=Coupons.all” 是的,你可以写......但是回调的目的不同............更多信息请查看api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

以上是关于Rails after_save 错误的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3:取消在 after_save 上的插入

具有虚拟属性的 after_save 回调 Rails 3

Rails after_save 回调未触发

Rails:是不是有跳过 after_save 过滤器的 save_without_validation 等效项?

Rails ActiveRecord 在 after_save 回调中使用最近保存的记录 ID [关闭]

确定 Rails after_save 回调中更改了哪些属性?