我正在玩一系列acts_as_taggable_on_steroids作爲學習練習。我正在看的版本做了一些我不明白計算標籤計數的東西。所以我想我會做使用PORC(普通老式Rails的計數器)版本:訪問ruby計數器緩存
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'會給你標籤集合的大小。它並不總是等於計數器緩存值。例如,您可以在此集合中創建一個尚未保存的新對象。在這種情況下,計數器緩存列將只保存已保存對象的數量,而'#size'將返回包含新對象的集合中的對象數量。要獲得計數器緩存的確切值,請使用'tag [:taggings_count]'。 'tag.taggings_count'應該可以工作,但我不確定。 – skalee 2011-01-28 17:13:08