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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top