У меня есть модель Обзор и модель Музыка. В опросе есть музыка и музыка, а также музыкальные обзоры.Rails ActiveRecord: group and order by count
Музыка имеет идентификатор и поле имени. Пользователь, который принимает опрос, должен выбирать между различными музыкальными инструментами.
Я хотел бы получить самую избранную музыку для группы опросов.
я закончил с чем-то вроде этого:
surveys.joins(:musics).group("musics.id").order("count(musics.id) desc")
(обследования быть группой обследований для данной даты) Но это дает мне ошибку неоднозначной «created_at», поэтому для тестирования I использовали все таблицы Survey вместо группы из них:
Survey.joins(:musics).group("musics.id").order("count(musics.id) desc")
Но теперь ошибка в том, что «surveys.id» должен появиться в GROUP BY оговорки или использоваться в агрегатной функции.
Что я делаю неправильно и как я могу получить результат, который я ищу?
Будет ли это работать, чтобы поменять порядок соединения 'Music.joins (: опросы) .group ('music.id'). order ('count (music.id) desc') '? –
@steveklein Да, я просто тестировал это, и он работает. Теперь мне нужно найти способ использовать группу опросов Surveys, а не всю таблицу. Любые идеи о том, как это сделать? –
Вы просмотрели [Rails docs] (http://guides.rubyonrails.org/active_record_querying.html#joining-tables)? В главе 12 есть несколько примеров объединения, которые, похоже, будут работать для вас. Не уверен, что лучше, не зная больше. –