Rails 4缓存和belongs_to关系

时间:2014-02-18 19:43:59

标签: ruby-on-rails ruby caching ruby-on-rails-4

假设我有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)中,但我认为情况更糟,因为它会对用户进行额外查询。

我想念一些明显的东西吗?你有什么经历?

1 个答案:

答案 0 :(得分:0)

我认为您必须在has_many :comments, autosave: true模型中使用User