2013-01-05 99 views
0

我已经完成了它在Railscast上所说的一切(http://railscasts.com/episodes/23-counter-cache-column)。如何检查计数器缓存是否正常工作?

我与那些设置完成

  • 迁移到新列“comments_count”添加到“community_topics”表,这是父表

  • 我加counter_cache:真到模型/ comment.rb(现在它只是像这样belongs_to的:commentable,多态=>真实,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

现在我明白了!我一直在想,如果你设置了counter cache,那么即使你放了类似** <%= parent.children.size%> **的东西,数字也会被返回,但是我应该把** <%= parent .comments_count%> **我是对的吗? – Foo

相关问题