Использование memcache в rails 3 для набора записей - PullRequest
0 голосов
/ 05 августа 2011

Я пытаюсь понять, как правильно использовать memcache в моем приложении rails.

В настоящее время в моем представлении заголовка моего приложения у меня есть условное выражение:

<% if current_user.company.stats == true %>

Таким образом, каждый раз, когда загружается любая страница, она попадает в базу данных, чтобы проверить, включена ли статистика для текущего пользователя.

Это, конечно, кажется мне безумным.

Итак, мой вопрос: как мне использовать memcache для решения этой проблемы? Компании редко меняются, поэтому относящиеся к ним данные следует кэшировать.

Я понимаю, что что-то вроде этого кеширует их всех:

  def self.all_cached
    Rails.cache.fetch('Company.all') { all }
  end

Но я знаю, что это не то, что мне нужно здесь - верно?

1 Ответ

2 голосов
/ 05 августа 2011

Memcached можно рассматривать как ключ-значение большой карты.

Вы должны написать что-то похожее на это:

 <% if stats_enabled?(current_user.company) %>

А затем напишите вспомогательный метод (например, на ApplicationHelper):

def stats_enabled?(company)
  Company.stats_enabled?(company) 
end

и метод кэширования на вашей модели:

class Company < ActiveRecord::Base
  ...
  def self.stats_enabled?(company) 
     return Rails.cache.fetch(company.id) {
        Company.find(company.id).stat
     }
  end
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...