使用fresh_when缓存活动记录关联

时间:2015-03-28 23:32:28

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

缓存ActiveRecord关联的最佳方法是什么?这是我在控制器中尝试做的事情:

def all_posts
  @posts = User.find(params[:id]).posts
  fresh_when @posts
end

每当向user模型添加新帖子时,我都需要清除缓存。

1 个答案:

答案 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中的缓存。