由于动作和页面缓存以及清扫器将从 Rails 4.0 中删除,我开始cache_digests
在我的 Rails 3.2 应用程序中使用,因为我正遭受整个手动过期的噩梦。
但即使在阅读了一些教程(如何基于键的缓存过期工作、缓存摘要、#387 缓存摘要、...)之后,我也找不到一种好方法来处理没有可以提供时间戳的父对象的视图或类似的东西。
例如,如果Document
并Todolist
使用关联touch
上的选项,这可以完美地工作。Project
# app/views/projects/show.html.erb
<% cache @project do %>
<%= render @project.documents %>
<%= render @project.todolists %>
<% end %>
但是index
行动呢?
# app/views/projects/index.html.erb
<% cache ??? do %>
<% @projects.each do |project| %>
...
<% end %>
<% end %>
当然,我可以使用任意密钥project_index
,例如在项目模型发生任何更改时使其过期,但这需要清扫者或观察者并摆脱它们,包括显式过期是基于密钥过期的主要原因之一。
Rails 4.0的方法是什么?