【发布时间】:2011-04-01 16:49:22
【问题描述】:
我的应用中有很多 has_many :through 关系。我正在扩展显示与此相关的信息,例如连接对象的数量。每当用户更新关系时,连接表都会被修改,我可以捕捉到我的 Sweepers。
问题是,连接表条目被删除,而不是销毁。如果关系消失了,我就没有合理的方法来检测这一点,并且我正在从缓存中显示误导性信息。像 :touch => true 或 :counter_cache => true 这样的所有东西都可以部分工作。如果更新或创建关系,它会增加。但是,如果用户删除关系,则不会发生任何事情。 :counter_cache 坏了, :touch 没有触发。
垃圾解决方案是在保存主模型时在控制器中调用.touch。这种作品,但看起来真的很不专业。这应该在模型逻辑中,而不是在控制器中。
我觉得我错过了一些重要的东西,但我无法理解这一点。任何人都可以对这个问题提出一些见解?
【问题讨论】:
标签: ruby-on-rails ruby activerecord has-many-through