Acessando o rubi cache do contador
-
22-09-2019 - |
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.
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.