Здесь кэшируются фрагменты для каждого отдельного продукта и фрагмент для всего списка продуктов.
def self.latest
Product.order(:updated_at).last
end
- возвращает последний измененный продукт (выборка по дате обновления).
Фрагмент для отдельного продукта, инвалидируется при изменении product:
<% cache ['entry', product] do %>
...
<% end %>
Фрагмент для всего списка:
<% cache ['store', Product.latest] do %>
...
<% end %>
инвалидируется при изменении Product.latest, то есть по сути при изменении любого продукта.
При повторном обращении к коду проверяется последнее изменении продукта (Product.latest). Если изменений после кэширования не было, полный список берется из кэша. Если были - рендерится заново, при этом в цикле проверяются изменения каждого продукта и при их отсутствии фрагмент для него берется из кеша.