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.