Группировка объектов ActiveRecord в пакетном режиме - PullRequest
2 голосов
/ 16 декабря 2011

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

Например, если у меня есть 13 продуктов, я хочу, чтобы блок вчтобы поместить первые 7 в один ряд, разбить и поместить следующие шесть в следующий ряд (я использую css для размещения полки под продуктами).

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

@shelves = Product.find_in_batches(:batch_size => 7) { |products| products }

Я обычно использую group_by, когда хочу группировать, например, по дате - есть ли способиспользовать group_by для группировки по количеству вместо атрибутов модели?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

find_in_batches.map выдаст вам ошибку no block. То, что вы на самом деле хотите, это:

@shelves = Product.all.in_groups_of(7)

И если вы хотите, чтобы в последней группе не было дополнительных nil объектов, дополняющих ее, попробуйте:

@shelves = Product.all.in_groups_of(7, false)

Конечно, вы захотите заменить all на более разумную область видимости, чтобы не загружать весь список объектов базы данных в память:)

2 голосов
/ 16 декабря 2011

Вы хотите массив партий. Это должно сделать только картирование партий.

@shelves = Product.find_in_batches(:batch_size => 7).map{|batch| batch}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...