2011-08-05 74 views
0

我想了解如何在我的rails應用程序中正確使用memcache。在rails 3中使用memcache獲取一組記錄

目前,在我的應用我的頭來看,我有一個條件,像這樣:

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

所以每次的任何頁面加載,它的命中數據庫來檢查當前用戶的公司已啓用的統計數據。

這當然對我來說似乎很瘋狂。

所以我的問題是,我應該如何使用memcache來解決這個問題。公司很少改變,所以與他們有關的數據應該被緩存。

我明白這樣的事情會緩存他們都:

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

但我知道那不是我所需要在這裏 - 對不對?

回答

2

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