У меня есть User
модель, которая has_many :notifications
. Notification
имеет логический столбец seen
и область действия :unseen
, которая возвращает все уведомления, где seen
равно false
.
class User < ApplicationRecord
has_many :notifications
has_many :unseen_notifications, -> { unseen }, class_name: "Notification"
end
Я знаю, что могу кэшировать количество уведомлений, если добавлю столбец с именем notifications_count
в users
и добавлю counter_cache: true
к моему вызову belongs_to
в Notification
.
Но что, если я хочу кэшировать количество непросмотренных уведомлений пользователя? т.е. кэш unseen_notifications.size
вместо notifications.size
? Есть ли встроенный способ сделать это с помощью counter_cache
или мне нужно использовать собственное решение?