1

我正在执行两个查询:

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

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

@collection = @doodads + @whatsits

我想按它们的“created_at”字段对它们进行排序:

@collection.sort_by $:created_at

虽然它确实按 created_at 字段对它们进行排序,但项目类型并没有混合 - 每个 Doodad 排在第一位,然后是每个 Whatsit。我怎样才能得到这个收集正确排序?

4

1 回答 1

2

一定要使用Array#sort_by!

使用通过给定块映射 self 中的值生成的一组键对 self 进行就地排序。

@collection.sort_by! &:created_at

正如您使用的那样@collection.sort_by &:created_at,wheresort_by方法适用于 的副本@collection,但排序后的副本不会再次存储回@collection(即@collection = @collection.sort_by &:created_at也可以使用)。现在sort_by!确实对接收器@collection本身执行排序。

于 2013-11-08T20:31:17.400 回答