缓存ActiveRecord关联的最佳方法是什么?这是我在控制器中尝试做的事情:
def all_posts
@posts = User.find(params[:id]).posts
fresh_when @posts
end
每当向user
模型添加新帖子时,我都需要清除缓存。
答案 0 :(得分:1)
你的解决方案非常完美。
如果您只是添加帖子,则有一个更高效的解决方案:您必须touch: true
belongs_to :user
模型的Post
部分。每次帖子更改并创建新帖子时,ActiveRecord都会触摸User对象。实现后,您可以使用此控制器代码:
def all_posts
user = User.find(params[:id])
@posts = user.posts
fresh_when user
end
从一个user
生成缓存密钥比从多个posts
生成缓存密钥要快得多。
查看http://www.xyzpub.com/en/ruby-on-rails/3.2/caching.html以了解Rails中的缓存。