Список результатов по объему, где (поле) не ноль, ТО второе условие

Мне интересно, есть ли способ сделать один запрос, чтобы получить следующие условия:

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 больше (то есть отображаются в конце списка)

Другие вопросы по тегам