Сортировка коллекции по полю в ассоциации - PullRequest
1 голос
/ 21 февраля 2012

У меня проблемы с поиском, как сделать запрос с MongoDB / Mongoid здесь. Итак, у меня есть модель User, которая has_many :scores, Score является другой моделью, которая имеет code и value. code является уникальным в области применения user. Для данного кода я хочу получить пользователей, отсортированных по value из score.

По сути, я хочу сделать что-то вроде: User.where('scores.code' => code).order_by('scores.value'), за исключением того, что это невозможно сделать вот так. Я попробовал несколько вещей, и я думаю, что ответ связан с User.where(:scores.matches => {:code => code}), но это ничего мне не возвращает, поэтому я должен что-то здесь упустить ..

Спасибо за ваше время, надеюсь, что я достаточно ясно!

1 Ответ

1 голос
/ 22 февраля 2012

Я думаю, что это, вероятно, то, что вы хотите:

scores = Score.where('code' => code).order_by('value')

Если вы хотите получить пользователя (при условии, что класс Score имеет belongs_to :user), то вы можете сделать это:

users_that_matches_code = scores.map { |s| s.user }
...