排序不同型号的集合

时间:2013-11-08 20:29:15

标签: ruby-on-rails ruby

我正在执行两个查询:

@doodads= Doodad.all
@whatsits = Whatsit.all

我将它们添加到一个集合中:

@collection = @doodads + @whatsits

我想按'created_at字段:

对它们进行排序
@collection.sort_by $:created_at

虽然它通过created_at字段对它们进行排序,但是项目类型没有混合 - 每个Doodad都是第一个,然后是每个Whatsit。如何正确收集这些文件?

1 个答案:

答案 0 :(得分:1)

请使用Array#sort_by!

  

使用通过在给定块中映射self中的值而生成的一组键来自行排序。

@collection.sort_by! &:created_at

当您使用@collection.sort_by &:created_at时,其中sort_by方法适用于@collection的副本,但已排序的方法不会再次存储回@collection(即{{ 1}}也会工作)。现在@collection = @collection.sort_by &:created_at确实在接收器sort_by!上执行排序。