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.