我如何让一个模型监听另一个模型的更新?

How do I having one model listen for updates of another?

我有两个模型,SubscriptionOffer。订阅有很多优惠。优惠有一个订阅。

订阅和优惠也有状态。如果订阅状态发生变化,所有关联的优惠都必须随之变化(反之则不行)。

现在我们正在使用 after_save 挂钩来浏览和更新订阅优惠。但似乎耦合太紧了。

我不知道这是否是最好的解决方案,但我想象的是这样的:

  1. 订阅节省
  2. 订阅广播其 id 和新的 status
  3. Offer 监听正在保存的订阅,并相应地自行更新

这是一个好的解决方案吗?我以前真的不必打破紧密耦合。我读过有关 Observers 的内容,但我不认为这正是我要找的东西,因为它们更适合观察自己模型的事件。对吗?

Wisper gem 正是您要找的。