Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 合并两个ActiveRecord数组并按创建的顺序排序_Ruby On Rails_Arrays_Sorting_Activerecord_Merge - Fatal编程技术网

Ruby on rails 合并两个ActiveRecord数组并按创建的顺序排序

Ruby on rails 合并两个ActiveRecord数组并按创建的顺序排序,ruby-on-rails,arrays,sorting,activerecord,merge,Ruby On Rails,Arrays,Sorting,Activerecord,Merge,通过阅读 我知道我可以做一些事情,比如: books = Book.find(:all) articles = Articles.find(:all) 并且认为: materials = books + articles materials.sort_by_created_at materials%> 如何合并和排序两个ActiveRecord数组???感谢帮助 你们很接近。使用加号连接阵列: materials=书籍+文章 通过调用sort\u by方法(从Enumerable混合)并传

通过阅读 我知道我可以做一些事情,比如:

books = Book.find(:all)
articles = Articles.find(:all)
并且认为:

materials = books + articles
materials.sort_by_created_at
materials%>

如何合并和排序两个ActiveRecord数组???感谢帮助

你们很接近。使用加号连接阵列:

materials=书籍+文章

通过调用
sort\u by
方法(从
Enumerable
混合)并传入前缀为
的属性,可以对组合数组进行排序

materials.排序依据(&:created\u at)


对于大型结果集,这在性能方面不是很好。您可以考虑从父类(如材料)派生书和文章模型,如果它们相似,则使用STI(单表继承)将它们存储在同一个表中,并使用<代码>查找< /代码>,使用<代码>订单< /COD>子句,因此,数据库可以为您进行排序。

您还可以使用
数组#concat
合并两个数组

materials = books + articles
materials.sort_by_created_at
<%= render :partial => materials %>