Выбрать всех пользователей, упорядочить их по количеству комментариев - PullRequest
1 голос
/ 13 декабря 2010

В приложении на Rails я хочу выбрать всех пользователей, упорядоченных по количеству комментариев, чтобы получить десятку комментариев. Как мне это сделать, в частности?

В моей модели пользователь и комментарий связаны между собой HABTM.

Прямо сейчас у меня есть:

  all_users = User.all :joins => :comments
  all_users.sort_by do |user| 
    user.comments.count
  end

Я все еще застрял с тем фактом, что это доставляет несколько записей для одного пользователя, поскольку один пользователь может иметь более одного комментария. И я все еще должен получить только первых десяти пользователей.

Что было бы более эффективным способом сделать это , например в самом запросе?

Спасибо

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Если вы настроили belongs_to :user в модели комментариев следующим образом:

belongs_to :user, :counter_cache => true

И тогда у вас было comments_count целочисленное поле со значением по умолчанию 0 в вашей таблице users, тогда вы могли бы упорядочить по этому, а не делать соединение.

1 голос
/ 13 декабря 2010

всегда можно сделать

User.all(:joins => :comments, :group => 'users.id', :order => 'count(*)')

, если это не влияет на вашу производительность дБ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...