2010-12-16 4 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

레일 4 있기 때문에, 당신은 CacheHelper 사용할 수 있습니다

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

Rails 4 CacheHelper doc

+0

이 일을해야한다 올바른 것으로 확인되다. –

관련 문제