我正在使用片段缓存,但我有用户特定的内联代码,例如:
<% cache @page do %>
stuff here
<% if current_user %>
user specific
<% end %>
more here
<% end %>
所以我想排除用户特定的几个代码块。有没有办法在 Rails 中做到这一点,或者我应该在开始时做一个 if 语句并为登录用户和普通访问者制作不同的缓存?(我将以这种方式有大量的代码重复)。
我正在使用片段缓存,但我有用户特定的内联代码,例如:
<% cache @page do %>
stuff here
<% if current_user %>
user specific
<% end %>
more here
<% end %>
所以我想排除用户特定的几个代码块。有没有办法在 Rails 中做到这一点,或者我应该在开始时做一个 if 语句并为登录用户和普通访问者制作不同的缓存?(我将以这种方式有大量的代码重复)。
对于每个用户的片段,您可以将模型放在数组中:
<% cache [@page, current_user] do %>
Rails 会用它们生成一个缓存键,例如:
pages/page_id-page_timestamp/users/user_id-user_timestamp
这样,您的片段将在用户/页面更新时失效,因为时间戳来自它们updated_at
(有关详细信息,请参阅cache_key)。