попробуйте это, не уверен, что это совершенно правильно. Надеюсь, это полезно для вас.
User.joins(recipes: [:comments]).group('users.id').order('AVG(comments.rating) DESC')
обновление
мои Модели пользователя, викторины, вопрос. Эта часть меня сбивает с толку, так это ваше определение пользователя. Являются ли пользователи, разместившие курсы, и пользователи, которые комментируют одну и ту же таблицу или отдельную таблицу? Отношения, которые я издеваюсь, это то, что я думаю почти точно так же, как ваши модели:
- Пользователь has_many викторины, и у пользователя есть вопросы.
- Quiz has_many вопросы и принадлежит пользователю.
- Вопросы принадлежат пользователю и принадлежат к викторине.
в этом случае, если я @users = User.joins(quizzes: [:questions]).group('users.id').order('AVG(questions.easy_count) DESC')
, результат я получаю результат @users
список пользователя, которому принадлежат викторинам упорядоченных по easy_count (в вашем случае рейтинге) вопросы принадлежит к соответствующей викторине.
описание кода
User.joins(quizzes: [:questions])
просто дает вам все ряды пользователей, которые имеет викторин (в вашем случае должны быть курсы), который имеет вопросы (в вашем случае должен быть комментарий). Рассмотрим следующий пример:
- user1 имеет quiz1
- quiz1 имеет Question1 и question2
результат, который вы получите от User.joins(quizzes: [:questions])
возвратит вас две дублирующие строки user1 (потому что user1 связано с двумя вопросами через quiz1)
group('users.id')
затем собирается в группу результат от User.joins(quizzes: [:questions])
по user.id
(вы хотите, чтобы получить список пользователей)
так что до сих пор то, что вы получаете, очень просто, это список пользователей, у которых есть викторины, и те викторины должны иметь хотя бы один вопрос, я уверен, что это владелец пользователя викторины, а не владелец пользователь вопросов.
затем в конце сортировать этот список по среднему easy_count вопросов (в вашем случае, оценка комментариев)
Выполнения этой группе комментариев от пользователя проводки комментария. Комментарий принадлежит пользователю и курсу (здесь пользователь отправляет комментарий). Курс has_many комментариев, Пользователь has_many courses.hop это помогает –
вы можете предоставить мне таблицу схем?так что я могу легко настроить его точно так же, как и вы, если у вас есть seed.rb, было бы замечательно –
Поскольку вы не предоставили мне таблицу, я просто издевался над подобными образцовыми отношениями. см. обновление в моем ответе –