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

标签 ruby-on-rails caching

我正在使用片段缓存,但我有用户特定的内联代码,例如:

<% 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)。

关于ruby-on-rails - Rails - 如何从片段缓存中排除代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857160/

相关文章:

html - 背景不会显示 : can i put a background upon a back ground in ruby on rails?

ruby-on-rails - Corey Haines 在 GoGaRuCo 2011 上使用了哪些测试工具和方法?

cakephp - 在 CakePHP 3 中即时更改缓存配置

c++ - 获取 QPixmap 的哈希值的最佳方法是什么?

java - 如何在java中缓存一些只读的xml文件

ruby-on-rails - 我一直在使用 Authlogic,但现在需要删除它的所有痕迹。我需要做什么?

ruby-on-rails - 使用 CarrierWave、Rails 3 上传种子文件

javascript - 禁用单击停止表单上的按钮提交

java - Infinispan 8 - cache.clear() - 如何正确理解 javadoc?

java - 点燃缓存错误