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 %>
如何合并和排序两个ActiveRecord数组???感谢您的帮助!
答案 0 :(得分:72)
你非常接近。使用加号来连接数组:
materials = books + articles
可以通过调用sort_by
方法(从Enumerable
混入)并传入前缀为&:
materials.sort_by(&:created_at)
对于大型结果集,这对性能不是很好。您可以考虑从父类(如Material)派生Book和Article模型(如果它们相似),使用STI(单表继承)将它们存储在同一个表中,并使用find
和{{1} }子句,所以数据库可以为你做排序。
答案 1 :(得分:6)
您还可以使用Array#concat
合并两个数组。