У меня есть куча списков, я пытаюсь отсортировать по признакам и дате в рельсах, но это не работает должным образом - PullRequest
0 голосов
/ 08 января 2010

Допустим, у меня есть список

список содержит дату и признак (истина или ложь)

Как мне упорядочить свои списки по порядку сначала по признакам = true?

В настоящее время у меня есть некоторые списки с признаками nil, затем некоторые из них выглядят как ложные - те, которые выглядели как ложные, отображаются перед признаками true. Это имеет смысл, потому что false - это прежде, чем true в алфавитном порядке (по крайней мере, это то, что, как я предполагаю, имеет место)

Если я печатаю

named_scope: sort_by_featured_date,: order => 'избранный ASC, созданный в DESC'

и если я сделаю это desc, то функция featured = false будет идти снизу, а nil - сверху. Является ли единственный правильный способ заставить ложь как-то?

Как мне сделать так, чтобы сортировка по признакам = истина была приоритетной? Я попробовал варианты в предложении заказа без удачи. Что-то о том, что истина - это само по себе пропущенное поле.

Ответы [ 2 ]

2 голосов
/ 08 января 2010

Вы можете использовать COALESCE (признак, ложь), чтобы гарантировать, что если строка имеет «featured = null», она станет «ложью» и затем будет упорядочена правильно.

1 голос
/ 08 января 2010
...
ORDER BY
    CASE
      WHEN featured = true THEN 0
      WHEN featured = false THEN 1
      WHEN featured IS NULL THEN 2
    END ASC,
    created_at DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...