繁体   English   中英

在Rails中使用Boolean进行sort_by

[英]sort_by with Boolean in 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方面的东西肯定会让事情变得更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM