在某些情况下,在Rails中呈现错误的部分,可能是片段缓存问题

edw*_*dmp 8 ruby-on-rails fragment-caching ruby-on-rails-5 ruby-on-rails-5.1

我有一个显示事件列表的模板

<tbody>
<%= render partial: 'event', collection: events, cached: true %>
</tbody>
Run Code Online (Sandbox Code Playgroud)

部分event:

<% cache event do %>
  <tr>
    <td>
      Something
    </td>
    <td>
      <%= render 'identifiable_link_with_tag', identifiable: event.identifiable %>
    </td>
  </tr>
<% end %>
Run Code Online (Sandbox Code Playgroud)

部分identifiable_link_with_tag:

<% cache identifiable do %>
    <span class="badge badge-info"><%= identifiable.type %></span> <%= link_to identifiable.identifier, identifiable %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

现在,奇怪的是接下来的事情.有时我会在事件视图中注意到,对于某些事件,identifiable会呈现另一个partial()而不是identifiable_link_with_tag:_identifiable.这似乎很奇怪,在列出25个事件的页面上,这只会发生在1或2或3(或0)个事件中.

简而言之,似乎有时会出现错误的可识别.我确实使用Rails片段缓存,因此这可能是一个因素.我错过了什么或者我遇到过Rails错误吗?这个问题很难在开发中重现,因此难以调试.