Cómo aislar / recuperar / recuento de un subconjunto de registros devueltos en los carriles

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

Pregunta

Estoy escribiendo un tablero de instrumentos informes para una aplicación rieles. El tablero de instrumentos es para los datos de usuario, y múltiple Actualmente se está ejecutando un recuento de las consultas de selección para construir las cuatro o cinco informes sobre la página. Estoy seguro de que hay una manera más eficiente de hacer esto. ¿Cómo hago para estructurar el método controlador de modo que sólo se ejecuta una consulta, y luego análisis sintácticos / subdivide los subconjuntos necesarios para los informes individuales?

Por ejemplo, un usuario tiene un género, la edad, y un rango de ingresos. En vez de hacer

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

podría simplemente hacer un solo

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

Y a continuación, analizar fuera de lo que necesito?

Cualquier ayuda es apreciada.

Gracias.

¿Fue útil?

Solución

Creo que se puede hacer esto

@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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top