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

mrb*_*rdo 2 ruby-on-rails

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

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

我不是要问整页缓存,只是片段.

小智 5

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

<%= cache_unless admin?, project do %>
  <b>All the topics on this project</b>
  <%= render project.topics %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Rails 4 CacheHelper doc