Rails 3: аннулирование кэша за пределами контроллера - PullRequest
2 голосов
/ 13 июля 2011

У меня есть определенные данные, которые обновляются нечасто - скажем, раз в несколько недель или около того. Кроме того, они доступны пользователям и могут отображаться как JSON. Это делает их идеальными для кеширования. Итак, я кеширую их вывод через caches_action.

Скоро я буду обновлять эти данные из задания Resque, и после успешного обновления мне нужно будет сделать кэш недействительным. Я не уверен, где это сделать, так как похоже на работу контроллера. Неправильно помещать это в модель, так как это больше касается уровня представления. (В конце концов, почему модель должна заботиться о том, чтобы вывод JSON длился вечно?)

Не думаю, что здесь будет работать уборочная машина, так как она работает в контроллере, правильно? Я видел, как люди предлагают создавать экземпляр контроллера в работе, но это тоже не очень хорошо. Кто-нибудь имел дело с этим в СУХОЙ форме? Единственный способ сделать это - манипулировать Rails.cache вручную.

1 Ответ

2 голосов
/ 13 июля 2011

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

Проверить:

http://www.daokaous.com/rails3.0.0_doc/classes/ActiveModel/Observer.html

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