Как отсортировать запрос activerecords по значению модели соединения? - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть модель выпуска.Проблемы имеют Комментарии и Голоса через модели соединения.В моем выпуске # index view я хотел бы иметь возможность сортировать результаты запроса по количеству комментариев и голосов следующим образом:

@issues = Issue.limit(10).find(:all, :order => "COMMENT_COUNT DESC")

Однако, если я попробую что-то вроде:

@issues = Issue.limit(10).find(:all, :order => "issue.comments.count DESC")

это не работает.Я, вероятно, могу добавить комментарий и подсчет голосов к модели проблемы ... но я не уверен, что это лучший способ сделать это, и я даже не думаю, что это лучший способ.

Как мне это сделать?

1 Ответ

0 голосов
/ 27 ноября 2011

Это немного сложнее, чем это. Это требует немного больше sql. Вы должны включить таблицу комментариев в запрос для ваших проблем. Затем необходимо сгруппировать результаты по идентификатору проблемы, чтобы получить количество комментариев по каждой проблеме.

Примерно так должно работать:

@issues = Issue.find(:all, :order => "count(comments.id) DESC"), :joins =>"inner join comments on comments.issue_id = issues.id", :group =>"issues.id",:limit=>"10" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...