我正在玩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调用以获取最新计数。

09-10 21:08