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
并在 View 中:
<%= render :partial => materials %>
如何对两个ActiveRecord数组进行合并和排序?谢谢!
最佳答案
你很亲密连接数组是使用加号完成的:materials = books + articles
可以通过调用sort_by
方法(从Enumerable
混合)并传入以&:
开头的属性来对组合数组进行排序materials.sort_by(&:created_at)
对于大型结果集,这将不是良好的性能。您可能会考虑从父类(例如Material)相似的Book和Article模型,使用STI(单表继承)将它们存储在同一张表中,并使用find
和order
子句,以便数据库可以为您排序。