Use uma consulta selecionada
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")
Deve fazê-lo em uma única consulta, então os objetos responderão ao alias da coluna como
schedule_date
e schedule_impression_count
Se você precisar usar esses objetos para outros dados na mesma visualização,
Account.eager_load(schedules: :impressions)
também deve funcionar e também executará uma única consulta.