2012-12-13 2 views
3

나는 조각 캐시를 사용하고 조각 캐시에서 코드 블록을 제외하지만 난 같은 특정 사용자입니다 인라인 코드가 방법 :레일 -

<% cache @page do %> 
    stuff here 
<% if current_user %> 
    user specific 
<% end %> 
    more here 
<% end %> 

그래서 나는이 코드의 여러 블록을 제외 할을 사용자 특정. Rails에서이를 수행 할 수있는 방법이 있습니까? 또는 처음에 if 문을 작성하고 기록 된 사용자와 일반 방문자에게 다른 캐시를 만들어야합니까? (나는이 방법으로 코드를 중복시킬 것이다).

pages/page_id-page_timestamp/users/user_id-user_timestamp 

이 방법 당신의 조각 :

<% cache [@page, current_user] do %> 

레일처럼, 그들 중 캐시 키를 만들 것입니다 :

+0

도우미를 사용하면 방법을 호출 할 수 있습니다. – Richlewis

답변

5

사용자 별 조각의 경우, 배열의 배열을 모델을 넣을 수 있습니다 타임 스탬프가 updated_at에서 나왔으므로 사용자/페이지 업데이트에서 무효화됩니다 (자세한 내용은 cache_key 참조).

+0

안녕하세요 @jdoe 이것은 사용자가 보유하고 있지만 내가 찾고있는 개인 정보에 적합합니다. 사용자가 로그인했는지 여부를 '예를 들어'이 링크를 수정한다고 표시됩니다. . 어쩌면 그저 나중에 자바 스크립트에서로드 할 것입니다 – Tom

+0

@Tom'current_user'를'!! current_user'로 바꿀 수 있습니다. 이렇게하면 캐시 키는'/ true' (사용자가 기록 된 경우)로 끝나고 그렇지 않으면'/ false'로 끝납니다. – jdoe

+0

달콤한! 그 일을 했어! – Tom