Zugreifen auf rubin Zähler Cache
-
22-09-2019 - |
Frage
Ich spiele mit einer Gabel von acts_as_taggable_on_steroids als Lernübung um. Die Version Ich betrachte tut einige Sachen, die ich nicht verstehe Tag zählt zu berechnen. Also dachte ich, ich eine Version machen würde mit PORC (Plain Old Rails Zähler):
class Tagging < ActiveRecord::Base #:nodoc:
belongs_to :tag, :counter_cache => "tagging_counter_cache"
...
Ich dachte tagging_counter_cache transparent zugegriffen wurde, als ich tag.taggings.count zuzugreifen, aber anscheinend nicht? explizit habe ich wirklich Zugang tag.tagging_counter_cache?
>> tag.taggings.count
SQL (0.7ms) SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16)
Das Gleiche gilt für Größe.
Es ist cool, wenn das der Fall ist, sondern wollte nur überprüfen.
Lösung
Beim #size auf der Sammlung
>> tag.taggings.size
wird der Wert in dem Zähler-Cache zurück. Der Aufruf #count
>> tag.taggings.count
wird immer einen SQL-Aufruf zwingen, die letzte Zählung zu erhalten.
Andere Tipps
Haben Sie erstellen die zugehörige Spalte in der Migration? Es muss irgendwo um den Cache zu speichern.