рельсы кеширование для application.rb - PullRequest
0 голосов
/ 20 августа 2010

У меня есть запрос, который извлекает статистику, которую я хотел бы разместить в нижнем колонтитуле каждой страницы моего приложения.Естественно, я помещаю это в application.rb, но рассматриваемая статистика не меняется в течение дня в общем ...

В основном в нижнем колонтитуле будет сказано:

В настоящее время, 46 стран, 75 городов и 20 000 мест.

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

@stat = Location.find(:all, :select => 'COUNT(locations.id) AS locations, COUNT(DISTINCT(city)) AS cities, COUNT(DISTINCT(countries.name)) AS countries', :joins => [ :places, :country ], :conditions => [ 'email IS NOT NULL' ]).first

1 Ответ

0 голосов
/ 20 августа 2010

Попробуйте:

@stat ||= Location.find(:all, :select => 'COUNT(locations.id) AS locations, 
                               COUNT(DISTINCT(city)) AS cities, 
                               COUNT(DISTINCT(countries.name)) AS countries', 
                              :joins => [ :places, :country ], 
                              :conditions => [ 'email IS NOT NULL' ]).first

После этого аннулируйте переменную @stat по времени или по другим событиям, например:

@stat = nil

Этого также можно добиться с помощью кэширования фрагментов .

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