Rails - как обновить элемент в кэшированном фрагменте? - PullRequest
1 голос
/ 14 июня 2019

У меня есть такой сценарий (шаблон основного вида):

<% 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 немедленно обновляться при изменении?

1 Ответ

0 голосов
/ 14 июня 2019

Используйте ключ кеша, когда вы обновляете что-либо, ключ кеша обновляется, и ваши данные обновляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...