Mysql
 sql >> Database >  >> RDS >> Mysql

Activerecord:strappa colonne specifiche e conteggi delle associazioni dell'associazione

Usa una query selezionata

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") 

Dovrebbe farlo in una singola query, gli oggetti risponderanno all'alias della colonna come schedule_date e schedule_impression_count

Se devi utilizzare questi oggetti per altri dati nella stessa vista, allora Account.eager_load(schedules: :impressions) dovrebbe anche funzionare ed eseguirà anche una singola query.