Сделайте недействительной определенную модель в кеше Rails - PullRequest
8 голосов
/ 02 сентября 2011

Я использую Rails 3 с Memcached для кэширования некоторых моделей. Когда модель изменится, я хочу сделать кеш для этой записи недействительным. С просмотром фрагментов я просто говорю expire_fragment("blah"). Как мне сделать это с моими моделями? Я не хочу говорить Rails.cache.clear и потерять все это. Я хочу что-то вроде Rails.cache.invalidate("/users/5"). Как мне это сделать?

1 Ответ

15 голосов
/ 02 сентября 2011

Вы не упомянули, в какой момент модель фактически добавляется в кеш. Вы можете попытаться сделать недействительным кеш модели, используя хук after_save.

class Model < AR::Base

  after_save :invalidate_cache

  private
  def invalidate_cache
     Rails.cache.delete("/users/#{self.id}")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...