Кэш счетчика Rails с активным хранилищем

У меня Account модель с 3-мя вложениями, использующая Active Storage, has_many_attached :attachments.

Я хочу знать, сколько прикрепленных файлов имеет учетная запись, наиболее эффективный способ (то есть без присоединений)

Единственное решение, которое я нашел, - это Account.last.attachments.count или .size, но оно делает два запроса: один для учетной записи и один с использованием таблицы active_storage_attachments.

Есть ли способ противодействовать кешированию количества вложений?

заранее спасибо

ИЗМЕНИТЬ

Конечно, я могу настроить свое собственное поле базы данных и посчитать его, я хочу знать, есть ли какое-то значение по умолчанию

ИЗМЕНИТЬ

Пытался сделать has_many_attached :attachments, counter_cache: true, но выдает ошибку


person alagaesia    schedule 04.12.2019    source источник
comment
blog.appsignal.com/2018/06/19/activerecords- counter-cache.html должен помочь вам   -  person Mark    schedule 04.12.2019
comment
Привет, @Mark, спасибо за ответ. К сожалению, в этой статье не говорится о решении Active Storage. Я знаю, как использовать кеш счетчика, проблема в ActiveStorage   -  person alagaesia    schedule 04.12.2019
comment
Извините, я прочитал более внимательно :)   -  person Mark    schedule 04.12.2019


Ответы (1)


Может, стоит попробовать CounterCache? https://api.rubyonrails.org/classes/ActiveRecord/CounterCache/ClassMethods.html

person Ben    schedule 04.12.2019
comment
Вы предлагаете выполнить миграцию, создав новое поле базы данных и использовать increment / Decment_counter при добавлении / удалении нового вложения? - person alagaesia; 04.12.2019
comment
Почему нет ? Вы можете увеличивать свое поле при загрузке вложения и уменьшать поле при его удалении? - person Ben; 04.12.2019
comment
Да, возможно, я хотел знать, есть ли какие-либо решения по умолчанию, но, вероятно, это единственный способ - person alagaesia; 04.12.2019