books = Book.find(:all)
articles = Articles.find(:all)
http://guides.rubyonrails.org/layouts_and_rendering.html から読むことで、次のようなことができることがわかりました。
<%= render :partial => [customer1, employee1, customer2, employee2] %>
必要に応じて、_customerおよび_employeeパーシャルを使用します。
だから私はそのようなことをしたいです:
materials = books + articles
materials.sort_by_created_at
そしてビューで:
<%= render :partial => materials %>
2つのActiveRecord配列のマージと並べ替えを行う方法???助けてくれてありがとう!
あなたはとても近いです。配列の連結はプラス記号で行われます:
_materials = books + articles
_
結合された配列の並べ替えは、_sort_by
_メソッド(Enumerable
からミックスイン)を呼び出し、_&:
_で始まる属性を渡すことで実行できます。
materials.sort_by(&:created_at)
これは、大規模な結果セットの場合、パフォーマンスの点で適切ではありません。 BookモデルとArticleモデルを似ている場合は、親クラス(Materialなど)から派生させ、STI(Single Table Inheritance)を使用して同じテーブルに格納し、find
をorder
句。データベースがソートを実行できるようにします。
Array#concat
を使用して、2つの配列をマージすることもできます。