Как изолировать / извлечь / посчитать подмножество возвращенных записей в Rails - PullRequest
1 голос
/ 30 июня 2010

Я пишу панель отчетов для приложения rails. Панель инструментов предназначена для пользовательских данных, и в настоящее время она выполняет несколько запросов выбора для построения четырех или пяти отчетов на странице. Я уверен, что есть более эффективный способ сделать это. Как мне организовать структурированный метод контроллера так, чтобы он выполнял только один запрос, а затем анализировал / разделял подмножества, необходимые для отдельных отчетов?

Например, у пользователя есть пол, возраст и диапазон дохода. Вместо того, чтобы делать

@men = User.count(:conditions => ['gender = ?', 'm']
@women = User.count(:conditions => ['gender = ?', 'f']
@age = User.count(:conditions => ['age_range = ?', 1]
etc.

Могу ли я просто сделать один

User.find(:all, :select => 'id,gender,age_range,income_range')

А потом разберись, что мне нужно?

Любая помощь приветствуется.

Спасибо.

1 Ответ

3 голосов
/ 30 июня 2010

Я верю, что вы можете сделать это

@users = User.all

@men = @users.select{|u| u.gender == 'm'}.size
@women = @users.select{|u| u.gender == 'f'}.size
@age = @users.select{|u| u.age_range == 1}.size
...