Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

828
Vistas
Consulta ActiveRecord. Agrupar por varias columnas de varias tablas
Attendance.joins(:user).group(:email, :name).count

La consulta anterior me da los siguientes resultados. El "Usuario 1" tuvo 2 asistencias y el "Usuario 2" tuvo 6 asistencias, además tengo acceso al nombre de usuario y correo electrónico.

 {["email@example.com", "User 1"]=>2, ["email2@example.com", "User 2"]=>6]}

Esto es genial, excepto que realmente me gustaría que el User.id también se incluyera. No puedo agrupar por ID porque entonces cada registro será único en lugar de estar agrupado por correo electrónico y nombre. Lo siguiente es lo que me gustaría:

 {[1, "email@example.com", "User 1"]=>2, [2, "email2@example.com", "User 2"]=>6]}

Cualquier ayuda sería apreciada.

Responda Asistencia.joins(:usuario).grupo(:email, :nombre, 'asistencias.user_id').count

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Attendance.joins(:user).group(:email, :name, 'attendances.user_id').count
over 4 years ago · Santiago Trujillo Denunciar

0

# collect required fields and group by email, name grouped_attendance = Attendance.joins(:user).pluck(:id, :email, :name).group_by{|r| [r[1], r[2]]} # calculate the counts attendance_counts = grouped_attendance.each{|k,v| grouped_attendance[k] = v.count}

Dependiendo de su configuración, pero lo anterior debería ser lo suficientemente rápido ya que no está instanciando objetos ActiveRecord.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda