访问ruby计数器缓存

时间:2010-03-24 11:59:11

标签: ruby-on-rails counter-cache

我正在玩一堆使用acts_as_taggable_on_steroids作为学习练习。我正在查看的版本做了一些我不理解计算标签计数的东西。所以我想我会使用PORC(Plain Old Rails Counters)做一个版本:

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) 

尺寸相同。

如果是这样的话很酷,但只是想检查一下。

2 个答案:

答案 0 :(得分:2)

在集合上调用#size

>> tag.taggings.size

将返回计数器缓存中的值。拨打#count

>> tag.taggings.count

将始终强制执行sql调用以获取最新计数。

答案 1 :(得分:0)

您是否在迁移中创建了关联列?它需要一些地方来存储缓存。