@M1Anderson
Ruby on Rails developer

Корректно ли такое кэширование в Rails?

Пытаюсь кэшировать через стандартный гем - cache_digest, но приложение все равно создает запросы к базе:
- cache @bgroups do
            - @bgroups.each do |bgroup|
              .bgroup
                = link_to bgroup.name, bgroup_vacancy_path(bgroup)

Консоль:
Bgroup Load (0.3ms) SELECT "bgroups".* FROM "bgroups" LIMIT 20
Cache digest for app/views/home/index.html.haml: f62c6ca48d18920cf265aa17882d6e1a
Read fragment views/bgroups/1/bgroups/2/bgroups/3/bgroups/4/bgroups/5/bgroups/6/bgroups/7/bgroups/8/bgroups/9/bgroups/10/bgroups/11/bgroups/12/bgroups/13/bgroups/14/bgroups/15/bgroups/16/bgroups/17/bgroups/18/bgroups/19/bgroups/20/f62c6ca48d18920cf265aa17882d6e1a (0.0ms)


Насколько я понимаю, запроса к базе вообще быть не должно, если информация в базе не изменилась, иначе в чем смысл такого кэширования? В чем тогда ошибка?
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
@vsuhachev
1) кэшировать нужно объект у которого есть метод updated_at
2) кэширование обычно выключено в development окружении

- @bgroups.each do |bgroup|
  = cache bgroup do
    .bgroup
       = link_to bgroup.name, bgroup_vacancy_path(bgroup)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы