Я кеширую фрагмент этого фрагмента:
<% cache('fragment-id') do %>
<div id="fragment-id">
<%= render @object %>
</div>
<% end %>
Теперь, очевидно, мне нужно заканчивать этот кэш каждый раз, когда обновляется объект (если говорить с точки зрения БД).
Так что я должен поставить эту строку:
expire_fragment('fragment-id')
... здесь и там среди контроллеров, каждый раз, когда действие обновляет (или сохраняет ) объект .
Но мне интересно, есть ли способ СУШКА , чтобы сделать это, например, написать какой-то хук в объект модель (/app/models/object.rb), которая запускает команду expire_fragment при каждом обновлении (или сохранении).
Возможно ли это?
EDIT #1:
Может быть, я могу просто перезаписать метод сохранения в объектной модели следующим образом:
def save
expire_fragment('fragment-id')
super
end
Но для того, чтобы это работало правильно, я должен быть уверен, что «сохранить»"метод вызывается также all другими методами сохранения, такими как * update_attributes *, save! и т. д. Это так?