Accéder à cache compteur ruby
-
22-09-2019 - |
Question
Je joue autour avec une fourchette de acts_as_taggable_on_steroids comme un exercice d'apprentissage. La version que je suis à la recherche des choses ne je ne comprends pas calculer Tag compte. Donc, je pensais que je ferais une version à l'aide PORC (compteurs Plain Old Rails):
class Tagging < ActiveRecord::Base #:nodoc:
belongs_to :tag, :counter_cache => "tagging_counter_cache"
...
Je pensais que tagging_counter_cache était accessible de manière transparente quand j'accéder tag.taggings.count mais apparemment pas? Dois-je vraiment accéder tag.tagging_counter_cache explicitement?
>> tag.taggings.count
SQL (0.7ms) SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16)
Idem pour la taille.
Il est cool si c'est le cas, mais je voulais juste vérifier.
La solution
Appel #size sur la collection
>> tag.taggings.size
renverra la valeur dans le cache du compteur. #count Appel
>> tag.taggings.count
sera toujours forcer un appel sql pour obtenir le dernier décompte.
Autres conseils
Avez-vous créé la colonne associée dans votre migration? Il a besoin d'un endroit pour stocker le cache.