2013-01-05 2 views
0

나는 Railscast (http://railscasts.com/episodes/23-counter-cache-column)에서 말하는대로 다했습니다.카운터 캐시가 제대로 작동하는지 어떻게 확인할 수 있습니까?

내가 부모 테이블 인 'community_topics "테이블에 새 열'comments_count '를 추가하는 설정으로

  • 마이그레이션을 완료했습니다

  • 나는 counter_cache을 추가했습니다. 사실 모델/comment.rb는 (:, commentable : 지금은 그냥이 belongs_to처럼 다형성 => 사실, counter_cache : 사실)

와 나는 내보기에 이것을 가지고

<퍼센트 = community_topic.comment_threads.size %> 아시다시피

, 나는 그 모습에 어떤 차이를 볼 수 없습니다.
카운터 캐시가 제대로 작동하는지 어떻게 알 수 있습니까?

답변

2

RailsCast에서 언급 했으므로 로그를 통해 실행중인 SQL을 확인하여 확인해야합니다. 카운터 캐시 전에이 같은 SQL COUNT 쿼리 뭔가 얻어야한다 :

SELECT count(*) AS count_all FROM "comment_threads" WHERE ("comment_threads".commentable_id = 61) 

을 당신이 하나를 참조하지 말아야 후, 대신 단지 CommunityTopic 로딩 참조 : 대답에 대한

SELECT * FROM "comment_threads" WHERE id = 61 
+0

감사합니다. 나는 development.log에서 로그를보고 있지만 모든 SQL 명령은 거의 동일하게 보인다. 여기에는 ** COUNT **이 (가) 포함되어 있으므로 카운터 캐시가 작동하지 않습니다. 권리? – Foo

+0

캐시를 추가 한 테이블에 대한 'COUNT' 쿼리가있는 경우에만 상위 테이블의 카운터 캐시가 존재하며 값을가집니다. –

+0

나는 그것을 얻었다! 일단 카운터 캐시를 설정했다면, ** <% = parent.children.size %> **와 같은 것을 넣었을지라도 숫자가 반환 될 것입니다. 그러나 ** <% = parent를 넣어야합니다. .comments_count %> ** 맞습니까? – Foo

관련 문제