Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 Rails按两列对数组排序_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails按两列对数组排序

Ruby on rails Rails按两列对数组排序,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设我有一个名为surveys的数组,它由Survey.all 每个调查模型都有一个长度和成本列 对数组进行排序的最佳方法是:首先按长度,然后按成本 我基本上想做一些类似于Survey.all.order(length::desc,cost::asc)的事情,但是在创建数组之后要在数组上执行。使用: 如果要控制asc与desc,只需乘以-1: surveys.sort_by { |survey| [-1 * survey.length, survey.cost] } 这应该适用于对象的常规数组

假设我有一个名为
surveys
的数组,它由
Survey.all

每个调查模型都有一个
长度
成本

对数组进行排序的最佳方法是:首先按
长度
,然后按
成本

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

使用:

如果要控制asc与desc,只需乘以-1:

surveys.sort_by { |survey| [-1 * survey.length, survey.cost] }
这应该适用于对象的常规数组或
ActiveRecord::Relation

使用:

如果要控制asc与desc,只需乘以-1:

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

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

仅适用于
调查
数组吗?此时,我将只能访问数组而不是调查。all(即,我实际上没有使用Survey.all来获取我的调查数组,但它更易于键入)应该可以工作,请尝试并让我知道,您也可以使用-Survey.length来描述。这是否仅适用于
surveys
数组?此时,我将只能访问数组而不是Survey.all(即,我实际上没有使用Survey.all来获取我的调查数组,但它更容易键入),请尝试让我知道,也可以使用-Survey.length来描述。特别是重复的第二个答案。将是另一个副本。特别是第二个副本的答案。将是另一个副本。