Список результатов по объему, где (поле) не ноль, ТО второе условие
Мне интересно, есть ли способ сделать один запрос, чтобы получить следующие условия:
1) scope :scheduled_for, -> {where.not(:scheduled_for => nil)}
затем
2) scope :sort_by_position, -> {order('position')}
Ожидаемый результат будет следующий список:
- Сообщение 1 (23 сентября && Позиция 1)
- Сообщение 2 (24 сентября && Позиция 2)
- Пост 3 (Позиция: 3)
- Пост 4 (Позиция: 4)
- так далее...
Примечание: поле позиции может быть случайным (т. Е. Пост 1 может иметь позицию 5, но так как его запланированный_ не пуст, он имеет приоритет над постом с более низкой позицией.
1 ответ
Вы можете указать несколько условий в order_by
order_by('scheduled_for IS NULL, position')
scheduled_for IS NULL
возвращает "1", если истина, "0" - ложь, поэтому значения NULL больше (то есть отображаются в конце списка)