Pergunta

Estou brincando com um garfo de Atos_as_taggable_on_steróides como exercício de aprendizado. A versão que estou vendo faz algumas coisas que não entendo para calcular a contagem de tags. Então, pensei em fazer uma versão usando o PORC (Plain Old Rails contadores):

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

Eu pensei que TAGGING_CONTER_CACHE foi acessado de forma transparente quando eu acesse tag.taggings.count, mas aparentemente não? Eu realmente tenho que acessar tag.tagging_counter_cache explicitamente?

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

O mesmo para o tamanho.

É legal se for esse o caso, mas só queria verificar.

Foi útil?

Solução

Chamando #size na coleção

>> tag.taggings.size

retornará o valor no contador. Chamando #Count

>> tag.taggings.count

sempre forçará uma chamada SQL para obter a contagem mais recente.

Outras dicas

Você criou a coluna associada em sua migração? Precisa de algum lugar para armazenar o cache.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top