В вашем контроллере вы можете попробовать что-то вроде:
@categories = Rails.cache.fetch('categories', :expires_in => 24.hours) { Category.joins(:posts).select('distinct categories.*').order('label') }
, который будет читать только для того, чтобы увидеть, кэшированы ли следующие категории данных в категориях и срок их действия не истекЕсли срок действия истек через 24 часа, то запросит модель и запишет новую запись в кеш Rails.
Для получения дополнительной информации я следовал следующему руководству .
Попробуйте.У меня так работает.Надеюсь, это поможет.