Search code examples
ruby-on-railsactiverecordobserver-pattern

Is it possible to know what exactly changed using an observer in ruby on rails?


I need send an email alert when the price of a product changes. Is it possible do this with ActiveRecord::Observer or do I need use programming logic in the edit form?


Solution

  • You can use Dirty Objects in order to achieve that, in this specific case, you'll have something like this in your observer.

    FooMailer.deliver_alert(foo) if foo.price_changed?
    

    According to: "Once you save a dirty object it clears out its changed state tracking and is once again considered unchanged" You should ask for the prince_changed? before the save operation is done.

    Hope It helps you.