2011-08-05 3 views
0

내 레일 응용 프로그램에서 memcache를 올바르게 사용하는 방법을 이해하려고합니다.레일 집합 3에 memcache를 사용하여 레코드 집합

현재 내 응용 프로그램 내 헤더보기에, 나는 조건과 같이이 : 그래서 매번

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

어떤 페이지가로드, 자사는 현재 사용자의 회사가 사용 통계를 가지고 있는지 확인하기 위해 데이터베이스를 타격.

물론 이것은 나에게 미친 것처럼 보인다.

내 질문은, 어떻게 이것을 해결하기 위해 memcache를 사용해야합니까입니다. 기업은 거의 변하지 않으므로 관련 데이터가 캐시되어야합니다.

는이 같은 일이 그들 모두를 캐시 것 이해 :

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

하지만 그게 내가 여기 필요가 무엇인지 - 맞죠?

답변

2

Memcached는 큰지도 키 - 값으로 볼 수 있습니다.

당신은 당신의보기에서 같은 것을 작성해야합니다 (예를 들어, ApplicationHelper에)를 헬퍼 메소드를 작성 후

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

을 그리고 :

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