随着观察者正式 从 Rails 4.0中删除,我很好奇其他开发人员在他们的地方使用什么。(除了使用提取的宝石。)虽然观察者肯定会被滥用,有时很容易变得笨拙,但除了缓存清除之外,还有许多有益的用例。
以需要跟踪对模型的更改的应用程序为例。观察者可以轻松地监视模型 A 上的更改,并在数据库中用模型 B 记录这些更改。如果您想观察几个模型之间的变化,那么一个观察者就可以处理这个问题。
在 Rails 4中,我很好奇其他开发人员使用什么策略来代替观察者来重新创建该功能。
就个人而言,我倾向于使用一种“胖控制器”实现,在每个模型控制器的 create/update/delete 方法中跟踪这些更改。虽然它稍微夸大了每个控制器的行为,但它确实有助于提高可读性和理解性,因为所有代码都放在一个地方。缺点是现在的代码非常相似,分散在几个控制器中。将该代码提取到 helper 方法中是一种选择,但是仍然需要调用那些遍布各处的方法。这不是世界末日,但也不完全符合“瘦控制器”的精神。
ActiveRecord 回调是另一种可能的选择,尽管我个人并不喜欢这种方式,因为在我看来,它往往会将两种不同的模型紧密地结合在一起。
因此,在 Rails 4中,没有观察者的世界中,如果您必须在创建/更新/销毁另一个记录之后创建一个新记录,那么您将使用什么样的设计模式?脂肪控制器、 ActiveRecord 回调,还是其他完全不同的东西?
谢谢你。