изменилось?вызов свойств не работает - PullRequest
2 голосов
/ 06 января 2012

У меня есть класс модели, как показано ниже:

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

....

Я хочу записать, изменилась ли цена продукта, прежде чем я сохраню его в базе данных.Затем у меня есть процедура, которая будет делать уведомления, как только продукт успешно сохранен с новой ценой.Но я получаю следующую ошибку, когда пытаюсь проверить, не является ли атрибут цены грязным:

undefined method `changed?' for 20:Fixnum

Разве этот метод не поддерживается из коробки в рельсах 3.1?Я называю это неправильно или в неправильном слое (модель против контроллера)?

1 Ответ

4 голосов
/ 06 января 2012

Возвращает логическое значение, отражающее, изменилось ли значение цены.

def check_if_price_changed
   self.price_changed?
end

Ознакомьтесь с документацией ActiveModel :: Dirty .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...