Ответ кеша, который использует включает - PullRequest
0 голосов
/ 04 февраля 2011

Я узнал, как использовать функцию Rails.cache.fetch для кэширования вызовов базы данных, однако, когда я отвечаю на запрос, я включаю содержимое нескольких связанных таблиц, например

tracks = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do
  Track.find(:all)
end
respond_with(tracks, :include => {:events => {:include => :speaker}})

Это кэширует (я думаю) вызов Track.find (: все), но также кэширует ли он включенные события и динамик?

1 Ответ

0 голосов
/ 04 февраля 2011

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

tracks = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do
  Track.find(:all, :include => {:events => :speaker})
end
respond_with(tracks)

Пример массива связанных объектов:

tracks, events = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do
  tracks = Track.find(:all, :include => [:events])
  events = tracks.collect(&:events)
  tracks, events
end
respond_with(tracks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...