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), но это ужасно.
Так что мой вопрос к вам, ребята. Что делают умные люди? Как правильно это сделать?