У меня есть такой сценарий (шаблон основного вида):
<% if @cars.count(:all) > 0 %>
<% presenter.collection.each_pair do |date, collection| %>
<tr>
<td>
...
</td>
</tr>
<%= render partial: 'car_row_content', collection: collection, as: :car, cached: Proc.new{|car| [cache_prefix, acl_fingerprint, car.record] } %>
<% end %>
<% end %>
А вот как частичное car_row_content
выглядит так:
<tr>
<td>
<%= car.something1 %>
</td>
<td>
<%= car.something2 %>
</td>
<td>
<%= car.something3 %>
</td>
</tr>
В этом частичном атрибутыsomething1
и something2
остаются неизменными все время, но атрибут something3
сильно меняется (пару раз в день).
Что происходит здесь - когда один из наших администраторов изменяет атрибут something3
, обычно он не «обновляется» сразу в главном шаблоне представления, и мы видим там «старое» значение.Как заставить кеш Rails немедленно обновляться при изменении?