Memcache基本用于rails 3

时间:2011-08-04 18:13:45

标签: ruby-on-rails ruby ruby-on-rails-3 memcached

所以我正在努力学习如何使用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)

我在哪里得到一个没有方法的错误......关于我应该如何实现这一点的任何想法?

1 个答案:

答案 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]