Доступ к кешу счетчика ruby
-
22-09-2019 - |
Вопрос
Я играю с форком 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 для получения последнего количества.
Другие советы
Создали ли вы связанный столбец при переносе?Ему нужно где-то хранить кэш.