我有一个模型类,如下所示:
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/