Rails Caching DB Запросы и лучшие практики

Загрузка БД на моем сайте становится действительно высокой, поэтому мне пора кэшировать общие запросы, которые вызываются тысячи раз в час, когда результаты не меняются. Так, например, на моей модели города я делаю следующее:

def self.fetch(id)   
  Rails.cache.fetch("city_#{id}") { City.find(id) }   
end 

def after_save
  Rails.cache.delete("city_#{self.id}")
end

def after_destroy
  Rails.cache.delete("city_#{self.id}")
end

Так что теперь, когда я могу использовать City.find (1), я впервые обращаюсь к БД, но следующие 1000 раз я получаю результат из памяти. Отлично. Но большинство вызовов city - это не City.find (1), а @ user.city.name, где Rails не использует выборку, а снова запрашивает базу данных ... что имеет смысл, но не совсем то, что я хочу.

Я могу сделать City.find (@ user.city_id), но это ужасно.

Так что мой вопрос к вам, ребята. Что делают умные люди? Как правильно это сделать?

Ответы на вопрос(4)

Ваш ответ на вопрос