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(单表继承)将它们存储在同一张表中,并使用findorder子句,以便数据库可以为您排序。

09-27 06:33