Вы можете использовать Грязные объекты , чтобы достичь этого, в данном конкретном случае у вас будет что-то подобное в вашем наблюдателе.
FooMailer.deliver_alert(foo) if foo.price_changed?
Согласно: " Как только вы сохраняете грязный объект, он очищает отслеживание измененного состояния и снова считается неизменным"Вы должны запросить prince_changed?
до того, как операция save
будет выполнена.
Надеюсь, это поможет вам.