#ruby-on-rails #arrays #sorting
#ruby-on-rails #массивы #сортировка
Вопрос:
Извините за вопрос новичка (я думаю …).
Допустим, у меня есть массив post_commenters с идентификатором пользователя и идентификатором комментария,
например:
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
Но я затрудняюсь смешивать и сортировать по количеству дубликатов…
Спасибо!
Редактировать
Хорошо, благодаря floatless, теперь я перехожу к чему-то более осязаемому — реальному примеру из foursquare api, использующему quimby gem:
- current_user.all_checkins.group_by(amp;:venue["id"]).first(50).each do |c|
= c.venue.id
Единственная проблема, он не … группируется.
Есть идеи?
Ответ №1:
Я думаю, вам следует использовать для этого GROUP BY
предложение внутри вашего SQL-запроса, а затем просто COUNT
сгруппировать комментарии.
Комментарии:
1. Мой пример был фиктивным примером — я получаю массив из api, не думаю, что group_by здесь работает…