2010-12-16 47 views
2

當「admin」用戶登錄時(例如current_user.role =「admin」),有沒有辦法禁用動作/碎片緩存?僅當管理員用戶未登錄時Rails動作/分段緩存

我在我的網站上使用緩存,但是當一個管理員用戶登錄時,我添加了一些額外的鏈接到某些被緩存的東西。管理流量的數量非常少,所以我只想緩存普通用戶看到的內容。當一個管理員登錄時,我基本上想要爲他關閉緩存。

我不是問整頁緩存,只有片段。

回答

4

我現在用的這個幫手,而不是 「緩存」 幫手:

def cache_unless_admin *args 
     m = args.shift 
     if cannot? :manage, m 
     cache args do 
      yield 
     end 
     else 
     yield 
     end 
    end 
5

由於軌道4,你可以使用CacheHelper:

<%= cache_unless admin?, project do %> 
    <b>All the topics on this project</b> 
    <%= render project.topics %> 
<% end %> 

Rails 4 CacheHelper doc

+0

這應該被檢查爲正確的一個 – 2015-11-30 11:44:22