ruby-on-rails – has_many的问题:through,cache,touch和counte
发布时间:2020-12-17 01:57:48 所属栏目:百科 来源:网络整理
导读:我有很多has_many:通过我的应用程序中的关系.我是扩展显示与此相关的信息,例如连接对象的数量.每当用户更新关系时,连接表都会被修改,我可以抓住这个我的扫描者. 问题是,连接表条目被删除,而不是被销毁.如果关系消失了,我没有合理的方法来检测这个,我在缓存
我有很多has_many:通过我的应用程序中的关系.我是扩展显示与此相关的信息,例如连接对象的数量.每当用户更新关系时,连接表都会被修改,我可以抓住这个我的扫描者.
问题是,连接表条目被删除,而不是被销毁.如果关系消失了,我没有合理的方法来检测这个,我在缓存中显示误导性的信息.一切如:touch => true,或:counter_cache =>真正起作用.如果更新或创建关系,它会增加.但如果用户删除关系,则不会发生任:counter_cache正在崩溃,:触摸不会触发. 垃圾解决方案是在保存主模型时在控制器中调用.touch.这种作品,但似乎真的非专业.这应该在模型逻辑中,而不是在控制器中. 我觉得我错过了一些很重要的东西,但我无法理解这一点.任何人都可以对这个问题有所了解吗? 解决方法
猴子修补Active Record不是必需的.定义关联时,将:dependent选项设置为:destroy.
class Book < ActiveRecord::Base has_many :authorships,:dependent => :destroy has_many :authors,:through => :authorships,:dependent => :destroy end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |