仅当管理员用户未登录时才执行Rails操作/片段缓存

时间:2010-12-16 16:27:52

标签: ruby-on-rails

有没有办法在“admin”用户登录时禁用动作/片段缓存(比如当current_user.role =“admin”)?

我在我的网站上使用缓存,但是当管理员用户登录时,我会为某些缓存的内容添加一些额外的链接。管理流量实际上是最小的,所以我只想缓存普通用户看到的内容。当管理员登录时,我基本上希望为他关闭缓存。

我不是在询问整页缓存,只是片段。

2 个答案:

答案 0 :(得分:5)

从Rails 4开始,您可以使用CacheHelper:

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

Rails 4 CacheHelper doc

答案 1 :(得分:4)

我现在正在使用这个助手,而不是“缓存”助手:

  def cache_unless_admin *args
      m = args.shift
      if cannot? :manage, m
        cache args do
          yield
        end
      else
        yield
      end
    end