Подтвердить что ты не робот

Sort_by с Boolean in Rails

Я знаю, что логические в Ruby - это классы. Но с практической точки зрения существует ли способ сортировки массива по логическим значениям (т.е. Со всеми элементами с истинным значением)?

Спасибо.

4b9b3361

Ответ 1

Вы можете обмануть и заставить его вернуть номер:

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

Ответ 2

Вы можете использовать раздел, а затем сгладить результаты:

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

Ответ 4

Поскольку здесь представлено несколько разных способов, я пошел дальше и сравнил их, чтобы узнать, что быстрее, сортируя 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 определенно ускоряет работу.