我的应用程序中有很多 has_many :through 关系。我正在扩展显示与此相关的信息,例如连接对象的数量。每当用户更新关系时,连接表都会被修改,我可以捕捉到我的 Sweepers。
问题是,连接表条目被删除,而不是被破坏。如果关系消失了,我就没有合理的方法来检测这一点,并且我正在从缓存中显示误导性信息。:touch => true 或 :counter_cache => true 之类的所有内容都可以部分工作。如果更新或创建关系,它会增加。但是,如果用户删除关系,则不会发生任何事情。:counter_cache 坏了, :touch 没有触发。
垃圾解决方案是在保存主模型时在控制器中调用 .touch 。这种作品,但看起来真的很不专业。这应该在模型逻辑中,而不是在控制器中。
我觉得我错过了一些大事,但我无法理解这一点。任何人都可以对这个问题有所了解吗?