是否有可能知道在rails上使用ruby中的观察者究竟发生了什么变化?

是否有可能知道在rails上使用ruby中的观察者究竟发生了什么变化?

问题描述:

当产品价格变化时,我需要发送电子邮件提醒。 是否有可能通过ActiveRecord::Observer来做到这一点,还是我需要在编辑表单中使用编程逻辑?是否有可能知道在rails上使用ruby中的观察者究竟发生了什么变化?

你可以使用Dirty Objects为了达到这个目的,在这个特定情况下,你的观察者中会有这样的东西。

FooMailer.deliver_alert(foo) if foo.price_changed? 

据:“一旦保存了脏对象时,它会清除其改变状态跟踪,并再次认为不变”你应该问的prince_changed?save操作完成。

希望它可以帮助你。

+0

我的mystake语法。我想在价格变化时发送警报,而不是“仅”价格。我试图说的是,当其他属性发生变化时,我不希望发出警报。抱歉。我编辑了我的问题。你能更新你的答案吗? – 2010-07-21 15:46:58

+0

更新,现在它使用动态方法(很酷的东西):)。 – jpemberthy 2010-07-21 15:56:33