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