Memcache основное использование в рельсах 3 - PullRequest
1 голос
/ 04 августа 2011

Итак, я пытаюсь научиться использовать memcache. Я установил его в моей системе. Я бегу этим. Я установил драгоценный камень Далли.

Все это вроде бы хорошо.

Допустим, я бы хотел кэшировать свою таблицу пользователей.

Я поместил это в мой файл 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 Ответ

3 голосов
/ 04 августа 2011

На основании вашего комментария, я так понимаю, вы получаете сообщение об ошибке:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...