2014-05-10 4 views
0

Category имеет отношение «много-к-одному» к Post.Предельное количество значений group_by возвращается

Я группирование сообщений в хэшей, в группах по каждой категории со следующим кодом:

posts.group_by {|post| post.category} 

Но как я ограничить количество сообщений, до, например, шесть должностей для каждой категории?

ответ

2

Try:

posts.group_by(&:category).map { |category, posts| [category, posts.take(6)] } 
+0

Кажется, работает блестяще. Просто вопросы, хотя, если в сообщениях в оригинальной коллекции 'posts' есть определенный порядок - существует ли риск того, что' .map' не соблюдает этот порядок и не выбирает * первые * шесть сообщений? – Numbers

+1

Вы можете добавить заказ по карте. 'posts.group_by (&: category) .order (: name) .map {| category, posts | [category, posts.take (6)]} ' – Iceman

+0

@ uri-agassi Интересно, можете ли вы объяснить, что делает бит карты на простом английском языке. Итак ... Возьмите POSTS и GROUP их по CATEGORY, а затем ... –

Смежные вопросы