Если эти фасеты хранятся в базе данных, вы можете получить счет прямо из базы данных, что гораздо более эффективно, чем циклически проходить по всем событиям, хотя вам, возможно, придется поиграться с вашим group_by и критериями соединения, так кака также моделирование ваших данных.
В любом случае, чтобы избавиться от необходимости использовать переменную экземпляра, вы можете переместить всю эту логику в одну функцию или поиграть с тем, что вы передаете между функциями.Например
def count_conf_facets(events)
counts = {}
events.each do |event|
[event.home_team_conf.id, event.away_team_conf.id].uniq.each do |conf_id|
counts[conf_id] ||= 0
counts[conf_id] += 1
end
end
counts
end