Rails 3 - Как отсортировать массив по количеству дубликатов - PullRequest
0 голосов
/ 25 мая 2011


Извините за вопрос нуба (наверное ...).

Скажем, у меня есть массив post_commenters с user_id & comment_id
Например:
1 - 27
2 - 31
1 - 54
3 - 87
1 - 12
2 - 54

Если бы я хотел ранжировать пользователей по количеству комментариев, мне нужно было бы подсчитать, сколько раз они прокомментировали, а затем .uniq.

Как я могу это сделать?

Я знаю, как это сделать:

unique_user_list = array.uniq {|s| s.user_id}

Я знаю, как считать дубликаты внутри массива:

array.count { |u| u.name == unique_user_list.name  } # in a loop of user

Но я не могу смешивать и сортировать по количеству дубликатов ...
Спасибо!

EDIT

Хорошо, благодаря floatless, я сейчас нахожусь в чем-то более осязаемом - с реальным примером из API Foursquare и использованием quimby gem:

- current_user.all_checkins.group_by(&:venue["id"]).first(50).each do |c|
  = c.venue.id

Единственная проблема, это не .... группировка.
Есть идеи?

1 Ответ

1 голос
/ 25 мая 2011

Я думаю, что вы должны использовать предложение GROUP BY внутри вашего SQL-запроса, а затем просто COUNT сгруппированные комментарии.

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