sort_by с Boolean в Rails

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

Спасибо.

26
задан AdamNYC 5 January 2012 в 03:08
поделиться

3 ответа

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

partition{|v| v == true}.flatten
17
ответ дан 28 November 2019 в 06:03
поделиться

Используя порядок ActiveRecord (включен в Rails):

collection.order(thing: :desc)
10
ответ дан 28 November 2019 в 06:03
поделиться

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

4
ответ дан 28 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: