在Rails中使用布尔值排序

我知道Ruby中的boolean是类。 但是从实际的角度来看,有没有办法通过布尔值对数组进行排序(即,所有元素首先具有真值)?

谢谢。

你可以作弊并让它返回一个数字:

sort_by { |a| a.thing ? 0 : 1 } 

您可以使用分区然后展平结果:

 partition{|v| v == true}.flatten 

通过使用ActiveRecord的顺序 (包含在Rails中):

 collection.order(thing: :desc) 

由于这里有几种不同的方式,我继续对它们进行基准测试,看看哪个是最快的,根据布尔属性排序27,000个项目:

 Rehearsal --------------------------------------------- sort_by 0.070000 0.000000 0.070000 ( 0.075203) partition 0.110000 0.000000 0.110000 ( 0.114667) order 0.000000 0.000000 0.000000 ( 0.000046) ------------------------------------ total: 0.180000sec user system total real sort_by 0.010000 0.000000 0.010000 ( 0.016611) partition 0.110000 0.000000 0.110000 ( 0.111384) order 0.000000 0.000000 0.000000 ( 0.000047) 

所以,是的,保持SQL方面的东西肯定会让事情变得更快。