Как истечь кеш фрагмента для индекса объекта при обновлении объекта - PullRequest
0 голосов
/ 25 января 2012

Я кеширую фрагмент этого фрагмента:

<% 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! и т. д. Это так?

1 Ответ

2 голосов
/ 25 января 2012

Вы можете наблюдать за своим объектом с помощью Sweeper, а внутри него добавить хук при обновлении. Читайте про подметальные машины там .

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