Подтвердить что ты не робот

Слияние двух массивов ActiveRecord и порядок с помощью created_at

books = Book.find(:all)
articles = Articles.find(:all)

Чтение из http://guides.rubyonrails.org/layouts_and_rendering.html Я знал, что могу сделать что-то вроде:

<%= render :partial => [customer1, employee1, customer2, employee2] %>

и он будет использовать _customer и _employee partials соответственно.

Итак, я хочу сделать что-то вроде этого:

materials = books + articles
materials.sort_by_created_at

и в представлении:

<%= render :partial => materials %>

Как сделать слияние и сортировку двух массивов ActiveRecord??? Спасибо за помощь!

4b9b3361

Ответ 1

Ты очень близко. Конкатенация массивов осуществляется с помощью знака плюса:

materials = books + articles

Сортировка объединенного массива может быть выполнена путем вызова метода sort_by (смешанного из Enumerable) и передачи в атрибуте с префиксом &:

materials.sort_by(&:created_at)

Это не будет хорошим показателем производительности для больших наборов результатов. Вы можете подумать о том, чтобы вывести модели книги и статьи из родительского класса (например, материала), если они похожи, используя STI (однократное наследование) для хранения их в одной таблице и используя find с предложением order, поэтому база данных может выполнить сортировку для вас.

Ответ 2

Вы также можете использовать Array#concat для объединения двух массивов.