所以我正在努力学习如何使用memcache。我在我的系统中安装了它。我正在运行它。我安装了dalli宝石。
一切似乎都很好。
让我们说我想缓存我的用户表。
我把它放在我的User.rb文件中:
def self.all_cached
Rails.cache.fetch('User.all') { all }
end
然后在我的控制器文件中,我曾经有过:
@users = User.where(:group_id => current_user.group_id)
所以现在我希望有类似的东西:
@users = User.all_cached.where(:group_id => current_user.group_id)
我在哪里得到一个没有方法的错误......关于我应该如何实现这一点的任何想法?
答案 0 :(得分:3)
根据您的评论,我认为您收到的错误如下:
undefined method `where' for #<Array:0x00000004d92520>
那是因为where
适用于模型,但是当你执行User.all
时,它基本上返回一个数组,并且没有为数组定义where
方法。
您可能希望使用find_all
方法代替枚举(和数组)(如此处所示:http://www.ruby-doc.org/core/classes/Enumerable.html#M001484),或者甚至尝试不同的方法。那是你的选择。
以下是他们给出的一个例子,让您了解它的工作方式:
(1..10).find_all {|i| i % 3 == 0 } #=> [3, 6, 9]