Вопрос

Я играю с форком acts_as_taggable_on_steroids в качестве учебного упражнения.Версия, на которую я смотрю, делает некоторые вещи, которые я не понимаю, для вычисления количества тегов.Поэтому я подумал, что сделаю версию, используя PORC (Обычные старые счетчики Rails).:

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

Я думал, что доступ к tagging_counter_cache осуществляется прозрачно, когда я получаю доступ к tag.taggings.count, но, видимо, нет?Действительно ли мне нужно явно обращаться к tag.tagging_counter_cache?

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

То же самое касается размера.

Это круто, если это так, но просто хотел проверить.

Это было полезно?

Решение

Вызывающий #размер в коллекции

>> tag.taggings.size

вернет значение в кэше счетчика.Вызов #количество

>> tag.taggings.count

всегда будет принудительно вызывать sql для получения последнего количества.

Другие советы

Создали ли вы связанный столбец при переносе?Ему нужно где-то хранить кэш.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top