Rails按两列排序数组

时间:2017-03-31 00:32:48

标签: ruby-on-rails ruby

我们说我有一个名为surveys的数组,由Survey.all

组成

每个调查模型都有lengthcost列。

首先在length上,然后在cost上对数组进行排序的最佳方法是什么。

我基本上想要做一些类似于Survey.all.order(length: :desc, cost: :asc)的事情,但是在创建它之后在数组上。

1 个答案:

答案 0 :(得分:2)

使用sort_by

surveys.sort_by { |survey| [survey.length, survey.cost] }

如果你想控制asc vs desc,只需乘以-1:

surveys.sort_by { |survey| [-1 * survey.length, survey.cost] }

这适用于常规对象数组或ActiveRecord::Relation