Я знаю, что boolean в Ruby - это классы. Но с практической точки зрения, есть ли способ отсортировать массив по булевым значениям (т.е. так, чтобы все элементы с истинным значением были первыми)?
Спасибо.
Вы можете использовать разбиение, а затем сгладить результаты:
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 определенно делает вещи быстрее.