改变了吗?呼吁物业不起作用

时间:2012-01-05 20:41:30

标签: 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中不支持开箱即用的方法吗?我是错误地调用它还是在错误的层(模型与控制器)中调用它?

1 个答案:

答案 0 :(得分:4)

这将返回一个反映价格值是否已更改的布尔值。

def check_if_price_changed
   self.price_changed?
end

查看ActiveModel::Dirty文档。