2010-12-16 11 views
2

"admin"ユーザーがログインしているとき(current_user.role = "admin"の場合など)アクション/フラグメントキャッシュを無効にする方法はありますか?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

Railsの4ので、あなたはCacheHelper使用することができます。この1

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

Rails 4 CacheHelper doc

+0

をすべき正しいものとしてチェックする –

関連する問題