Как изолировать / извлекать / считать подмножество возвращенных записей в рельсах

StackOverflow https://stackoverflow.com/questions/3150704

Вопрос

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

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

@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')

А потом анализируйте, что мне нужно?

Любая помощь ценится.

Спасибо.

Это было полезно?

Решение

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

@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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top