假设我有User
模型和Comment
模型belongs_to :user
我想知道当我想要缓存列出了评论的用户页面时要做什么(通过'俄语玩偶缓存') - 我为整个用户视图执行全局cache
阻止,并为每个用户放入许多缓存块评论,并为touch: true
关联添加belongs_to :user
。因此,当某些注释发生更改时,只有2个缓存可供更新 - 用于该注释以及该用户。
但现在我需要缓存看起来像的评论视图:
= comment.user.name
= comment.text
因此,我们需要更新缓存,不仅在此注释更改时,而且在更改用户名时。有什么更合适的方法呢?
我当前的解决方案是在用户保存回调后生成comment.update_all(updated_at: updated_at)
并在cache(comment)
块中包装视图。但我不喜欢它,因为我只想检测一些字段的变化。
另一种解决方案是将视图包装在cache(comment, comment.user)
中,但我认为情况更糟,因为它会对用户进行额外查询。
我想念一些明显的东西吗?你有什么经历?
答案 0 :(得分:0)
我认为您必须在has_many :comments, autosave: true
模型中使用User
。