Rails - 如何从片段缓存中排除代码块

时间:2012-12-13 09:52:21

标签: ruby-on-rails caching

我使用片段缓存,但我的内联代码是用户特定的,如:

<% cache @page do %>
  stuff here
<% if current_user %>
  user specific
<% end %>
  more here
<% end %>

所以我想排除用户特定的几个代码块。有没有办法在Rails中这样做,或者我应该在开头做一个if语句,并为登录用户和常规访问者制作不同的缓存? (我将以这种方式重复代码)。

1 个答案:

答案 0 :(得分:5)

对于每用户片段,您可以将数组中的模型放在一个数组中:

<% cache [@page, current_user] do %>

Rails会从中创建一个缓存密钥,例如:

pages/page_id-page_timestamp/users/user_id-user_timestamp

这样,您的片段在用户/页面更新时将失效,因为时间戳来自updated_at(有关详细信息,请参阅cache_key)。