Mysql
 sql >> Base de données >  >> RDS >> Mysql

Activerecord :plumer des colonnes spécifiques et le nombre d'associations d'associations

Utiliser une requête de sélection

Account.
  joins(schedules: :impressions).
  select("accounts.name as account_name, 
          schedules.date as schedule_date, 
          schedules.summary as schedule_summary, 
          count(impressions.id) as schedule_impression_count" ).
  group("accounts.name,schedules.date,schedules.summary") 

Devrait le faire en une seule requête, puis les objets répondront à l'alias de colonne comme schedule_date et schedule_impression_count

Si vous avez besoin d'utiliser ces objets pour d'autres données dans la même vue, alors Account.eager_load(schedules: :impressions) devrait également fonctionner et exécutera également une seule requête.