Usar una consulta de selección
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")
Debería hacerlo en una sola consulta, entonces los objetos responderán al alias de la columna como schedule_date
y schedule_impression_count
Si necesita usar estos objetos para otros datos en la misma vista, entonces Account.eager_load(schedules: :impressions)
también debería funcionar y también ejecutará una sola consulta.