ruby-on-rails - 变了?调用属性不起作用

标签 ruby-on-rails ruby-on-rails-3

我有一个模型类,如下所示:

class Product < ActiveRecord::Base
    belongs_to :user;
    attr_accessible :price

 before_save :check_if_price_changed
    after_save :notify_about_price_change

    def check_if_price_changed
       if (price.changed?) then
               @price_changed = true
           else
               @price_changed = false
           end
    end

....

我想在将产品保存到数据库之前记录产品价格是否发生变化。然后我有一个例程,一旦产品以新价格成功保存,就会发出通知。但是当我尝试检查 price 属性是否脏时出现以下错误:

undefined method `changed?' for 20:Fixnum

rails 3.1 不支持这种方法吗?我是在错误地调用它还是在错误的层中调用它(模型与 Controller )?

最佳答案

这将返回反射(reflect)价格值是否已更改的 bool 值。

def check_if_price_changed
   self.price_changed?
end

看看 ActiveModel::Dirty文档。

关于ruby-on-rails - 变了?调用属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749484/

相关文章:

ruby-on-rails - 如何重构这个 Rails Action ?

ruby-on-rails - Rails 复选框和参数

javascript - x-可编辑保存后重新渲染部分

ruby-on-rails - Rails + Ember.js + Devise 自由记者应用程序 - 数据范围界定

ruby - 通过 ruby​​gems 安装 Kyoto Cabinet 失败

ruby-on-rails-3 - 混合 has_one 和 has_and_belongs_to_many 关联

ruby-on-rails - Rails 4 - 无论请求的格式如何,如何呈现 JSON?

css - content_for Rails 4 未加载

ruby-on-rails-3 - Rails 3 推荐优秀的 JavaScript 教程

ruby-on-rails - Rails 在没有收集/映射的情况下将嵌套关系作为 ActiveRecord 对象获取