Rails action / фрагментный кеш, только если администратор не залогинен - PullRequest
2 голосов
/ 16 декабря 2010

Есть ли способ отключить кэширование действий / фрагментов, когда вошел пользователь "admin" (например, когда current_user.role = "admin")?

Я использую кэширование на своем сайте, но когдаПользователь admin вошел в систему, я добавил несколько дополнительных ссылок на некоторые вещи, которые кэшируются.Количество трафика администратора действительно минимально, поэтому я хотел бы только кэшировать то, что видит обычный пользователь.Когда администратор вошел в систему, я хочу, чтобы кеширование для него было отключено.

Я НЕ спрашиваю о полностраничном кэшировании, только фрагмент.

Ответы [ 2 ]

5 голосов
/ 18 апреля 2014

Начиная с Rails 4, вы можете использовать CacheHelper:

<%= cache_unless admin?, project do %>
  <b>All the topics on this project</b>
  <%= render project.topics %>
<% end %>

Rails 4 CacheHelper doc

4 голосов
/ 16 декабря 2010

Сейчас я использую этот помощник вместо помощника "cache":

  def cache_unless_admin *args
      m = args.shift
      if cannot? :manage, m
        cache args do
          yield
        end
      else
        yield
      end
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...