2013-03-29 1 views
0

bar_id = 1의 경우 첫 번째 액세스시 캐시가 형성됩니다. bar_id가 나중에 2로 변경 되더라도 1의 값은 유지됩니다. 나는 그것이 bar_id (들)를 통해 작동하게하려면 어떻게해야특정 객체 ID에 특정한 레일 캐시 검색 방법

@foo = Rails.cache.fetch("foo_by_id", expires_in: 10.minutes) do 
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first 
end 

답변

1

캐시 키는에 의해 캐시를 분리하려는 동적 데이터를 포함해야합니다. 귀하의 경우에는 캐시 키에 bar_id가 포함되어야합니다. 내가 할 수있는 일은 다음과 같습니다.

@foo = Rails.cache.fetch("foo_by_id:#{params['bar_id']}", expires_in: 10.minutes) do 
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first 
end 
+0

감사합니다. Erez, 정말 고맙습니다. 캐싱과 관련하여 사용할 수있는 다른 패턴이 있습니까? – Rpj

+1

@Rpj 질문이 너무 일반적이기 때문에 알려줍니다. 좀 더 구체적인 내용이 있으면 다른 질문을 올리십시오. 도와 주시면 기꺼이 도와 드리겠습니다. –