Rails片段缓存不能获取最新信息

时间:2014-10-29 12:22:38

标签: ruby-on-rails caching ruby-on-rails-4 fragment-caching

我有这种缓存

<% cache [obj.id, obj.updated_at] do %>
  <%= render obj %>
<% end %>

_obj.html.erb我有

<% cache ["obj/#{obj.id}/logic", obj.updated_at] do %>
some logic
<% end %>
<% cache [obj.parent.id, obj.parent.updated_at] do %>
 parent's logic logic
<% end %>

当只更改父数据时,我仍然获得与以前相同的缓存。只有当obj的updated_at发生变化时,内部缓存才会更新..

这是正确的行为吗?不应该在缓存的部分内部缓存单独处理吗?或者每当我触摸obj.parent时我是否需要触摸obj?

1 个答案:

答案 0 :(得分:0)

正如上面的评论所说,这就是你应该缓存片段的方式(russian doll pattern)。但是,看起来您根据两个对象缓存了一段内容,因此它应该只是<% cache [obj, obj.parent] %>。你不需要在这里缓存两次,因为它没有效果。

EDIT2:

<% cache [obj, obj.parent] do %>
  <%= render obj %> 
<% end %>
相关问题