Формирование определенного порядка в области видимости модели Rails - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть модель M в моем коде рельсов.У него есть поле F, которое может иметь 4 значения D, J, M и Z

Если я использую такую ​​область видимости, она будет сортировать данные по полю Fв алфавитном порядке:

default scope {order (F: :asc)}

У меня есть 2 вопроса здесь:

  1. Я не хочу сортировать данные в алфавитном порядке по F.Я хотел бы, чтобы данные отображались с этим конкретным порядком F.Я ВСЕГДА хочу, чтобы записи, содержащие значение M для поля F, сначала следовали за записями, имеющими значение J, D, а затем Z в этом порядке.Как мне этого добиться?

  2. Предположим, я хотел бы сначала отобразить записи, имеющие J, а затем отсортировать остальные записи по алфавиту в поле F, как я могу это сделать?сделать это?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете выполнить сортировку с помощью оператора CASE

order("CASE WHEN F = 'M' THEN 0 WHEN F = 'J' THEN 1 WHEN F = 'D' THEN 2 ELSE 3 END")

В качестве альтернативы (если только «M» должно быть первым, а остальные могут быть в алфавитном порядке)

order("CASE WHEN F = 'M' THEN 0 ELSE 1 END, F")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...