我玩弄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调用,以获得最新计数。

其他提示

你创建迁移相关的列?它需要在某处存储缓存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top