Domanda

Sto giocando con un fork di act_as_taggable_on_steroids come esercizio di apprendimento.La versione che sto guardando fa alcune cose che non capisco per calcolare i conteggi dei tag.Quindi ho pensato di realizzare una versione utilizzando PORC (Plain Old Rails Counters):

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

Pensavo che si accedesse a tagging_counter_cache in modo trasparente quando accedo a tag.taggings.count ma a quanto pare no?Devo davvero accedere esplicitamente a tag.tagging_counter_cache?

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

Idem per la taglia.

Sarebbe bello se fosse così, ma volevo solo controllare.

È stato utile?

Soluzione

Chiamando #size sulla collezione

>> tag.taggings.size

restituirà il valore nella cache del contatore.Chiamando #conte

>> tag.taggings.count

forzerà sempre una chiamata SQL per ottenere il conteggio più recente.

Altri suggerimenti

Hai creato la colonna associata nella migrazione? Ha bisogno di un posto per memorizzare la cache.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top