题
我玩弄acts_as_taggable_on_steroids的叉子作为一个学习锻炼。我看的版本做了一些东西,我不明白,计算标签计数。所以我想我会做使用PORC(普通老式Rails的计数器)的一个版本:
class Tagging < ActiveRecord::Base #:nodoc:
belongs_to :tag, :counter_cache => "tagging_counter_cache"
...
我想,当我访问tag.taggings.count但显然不是tagging_counter_cache被透明地访问?难道我真的要访问tag.tagging_counter_cache明确?
>> tag.taggings.count
SQL (0.7ms) SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16)
为相同大小。
这是冷静,如果是这样的话,但只是想检查。
解决方案
在收集调用#size
>> tag.taggings.size
将在计数器高速缓存返回该值。主叫#COUNT
>> tag.taggings.count
总是会强制SQL调用,以获得最新计数。
其他提示
你创建迁移相关的列?它需要在某处存储缓存。
不隶属于 StackOverflow