Кэширование фрагментов с помощью Touch

#ruby-on-rails #caching #fragment-caching

#ruby-on-rails #кэширование #кэширование фрагментов

Вопрос:

В настоящее время я использую кэширование фрагментов с помощью ключа объекта. И я истекаю срок действия кэша с помощью Touch, обновляя столбец updated_at, а затем текущий кэш становится устаревшим. И в следующий раз будет сгенерирован новый кэш.

 <% cache do product %>
  

Ключ кэша для объекта выглядит следующим образом

 table_name/ID-updated_at
  

Теперь я хочу кэшировать свои продукты где-нибудь в другом месте. Для этого я хотел бы сделать то же самое, что и раньше, то есть просто указать объект в параметрах кэша, но я не могу этого сделать : (

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

 table_name/ID-something_updated_at
<% cache product,something do %>
  

К сожалению, это невозможно, у кого-нибудь есть идеи, как я мог бы решить свою проблему?

Грег

Ответ №1:

Вы можете передать во фрагмент любой старый массив, который вам нравится, так что это довольно простое изменение для достижения того, что вам нужно:

 <% cache [product, other, product.updated_at] do %>
  ...
<% end %>