如果您有 2 个模型,视频和类别,并且它们彼此之间具有“has_and_belongs_to_many”关系,那么当其中一个模型发生更改时,如何执行触摸以使缓存失效?
您不能像处理一对多关系那样“触摸”它们。现在,当我更改类别名称时,属于该类别的视频不知道更改,直到我使缓存无效。我的视图模板显示每个视频的类别名称。
在您想要更新的模型上,您可以执行以下操作:
class Video < ActiveRecord::Base
has_and_belongs_to_many :categories,
after_add: :touch_updated_at,
after_remove: :touch_updated_at
def touch_updated_at(category)
self.touch if persisted?
end
end
现在,每当在视频中添加或删除类别时,视频的 Updated_at 时间戳都会更新。如果您希望在添加视频或从中删除视频时更新类别,您可以对类别类执行相同的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)