将两个不同的ActiveRecord集合合并为一个

时间:2016-03-18 21:41:05

标签: ruby-on-rails ruby sorting ruby-on-rails-4 activerecord

我想创建所有公司活动的视觉时间表。时间轴的HTML使用loop

构建

为简单起见,我们假设有两个模型Hire& Deal。两个模型都具有date属性和一些特定于模型的属性。如何合并两个模型的ActiveRecord结果,然后将order组合哈希date合并为一个我可以循环的哈希?

1 个答案:

答案 0 :(得分:7)

好吧,假设查询HireDeal模型的结果是一个对象数组( collection ),那么你只需使用+来将它们连接成一个新数组,并按datesort_by对项目进行排序:

combined = ( Hire.all + Deal.all ).sort_by(&:date)

或使用concat将一个集合与另一个集合连接起来:

combined = Hire.all.concat( Deal.all ).sort_by(&:date)