是否有可能知道在rails上使用ruby中的观察者究竟发生了什么变化?
问题描述:
当产品价格变化时,我需要发送电子邮件提醒。 是否有可能通过ActiveRecord::Observer
来做到这一点,还是我需要在编辑表单中使用编程逻辑?是否有可能知道在rails上使用ruby中的观察者究竟发生了什么变化?
答
你可以使用Dirty Objects为了达到这个目的,在这个特定情况下,你的观察者中会有这样的东西。
FooMailer.deliver_alert(foo) if foo.price_changed?
据:“一旦保存了脏对象时,它会清除其改变状态跟踪,并再次认为不变”你应该问的prince_changed?
前save
操作完成。
希望它可以帮助你。
我的mystake语法。我想在价格变化时发送警报,而不是“仅”价格。我试图说的是,当其他属性发生变化时,我不希望发出警报。抱歉。我编辑了我的问题。你能更新你的答案吗? – 2010-07-21 15:46:58
更新,现在它使用动态方法(很酷的东西):)。 – jpemberthy 2010-07-21 15:56:33