rails 3 group by и sum

У меня есть следующая модель:

activity_types: id, name

activities: id, id_activity_type, occurrences, date (other fields)

Таблица видов деятельности хранит информацию о том, сколько раз в день происходит тот или иной вид деятельности. Но теперь я хочу показать пользователю, сколько видов деятельности каждого типа произошло за месяц.

Я нашел следующее решение основанное на этом посте, которое кажется нормальным:

Activity.all(:joins => :activity_types,
             :select => "activity_types.id, activity_types.name, SUM(activities.occurrences) as occurrences",
             :group => "activity_types.id, activity_types.name",
             :order => "activity_types.id")

но это кажется много кода для стандартов rails и API rails говорит, что это устарело.

Я нашел следующее решение, которое намного проще:

Activity.sum(:occurrences).group(:activity_type_id)

Которое возвращает хэш с activity_type_id => occurrences.

Что мне нужно сделать, чтобы получить следующий хэш: activity_type.name => occurrences ?

13
задан Community 23 May 2017 в 11:58
поделиться