expire_action от модели - PullRequest
       6

expire_action от модели

3 голосов
/ 28 февраля 2012

У меня есть автономное грабли, которое обновляет мои модели. Когда это произойдет, я хочу прекратить действие: show для этой модели.

# in lib/models/my_model.rb
after_update :expire_cache
def expire_cache
  expire_action :controller => :my_models, :action => :show, :id => self
end

Это не работает, потому что expire_action недоступно в модели. Вызов ActionController.new.expire_action вызывает у меня много странных проблем с маршрутом, что вполне разумно, поскольку ни одна из логик маршрута не подключена.

Я думаю, что обычным способом expire_action является уборщик, но это не работает, потому что моя модель не обновляется через действия контроллера.

ПРИМЕЧАНИЕ. Я чувствую, что могу использовать кеширование неправильно, поскольку нигде не могу найти ответ на этот вопрос.

1 Ответ

1 голос
/ 28 февраля 2012

Вы ищете ActionController Sweeper .Вы можете найти официальную документацию Rails о том, как их реализовать здесь , но, скорее всего, вам нужно что-то вроде этого:

class MyModelSweeper < ActionController::Caching::Sweeper
  observe MyModel

  def after_update(my_model)
    expire_action :controller => :my_models, :action => :show, :id => my_model
  end

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