开发者

Accessing ruby counter cache

I'm playing around with a fork of acts_as_taggable_on_steroids as a learning exercise. The version I'm looking at does some stuff I don't understand to calculate Tag counts. So I thought I'd do a version using PORC (Plain Old Rails Counters):

class Tagging < ActiveRecord::Base #:nodoc:
  belongs_to :tag, :counter_cache => "tagging_counter_cache"
...

I thought tagging_counte开发者_Go百科r_cache was transparently accessed when I access tag.taggings.count but apparently not? Do I really have to access tag.tagging_counter_cache explicitly?

>> tag.taggings.count
  SQL (0.7ms)   SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16) 

Same for size.

It's cool if that's the case but just wanted to check.


Calling #size on the collection

>> tag.taggings.size

will return the value in the counter cache. Calling #count

>> tag.taggings.count

will always force a sql call to get the latest count.


Did you create the associated column in your migration? It needs someplace to store the cache.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜