0

次の条件を取得するために1つのクエリを作成する方法があるかどうか疑問に思っています:

1)scope :scheduled_for, -> {where.not(:scheduled_for => nil)}

それから

2)scope :sort_by_position, -> {order('position')}

期待される結果は、次のリストになります。

  • ポスト 1 (9 月 23 日 && ポジション 1)
  • ポスト 2 (9 月 24 日 && ポジション 2)
  • ポスト 3 (ポジション: 3)
  • ポスト 4 (ポジション: 4)
  • 等...

注: 位置フィールドはランダムである可能性があります (つまり、投稿 1 の位置は 5 ですが、その Scheduled_for は空ではないため、より低い位置の投稿よりも優先されます。

4

1 に答える 1

0

複数の条件を指定できますorder_by

order_by('scheduled_for IS NULL, position')

scheduled_for IS NULLtrue の場合は "1" を返し、"0" は false を返すため、NULL 値の方が大きい (つまり、リストの最後に表示される)

于 2016-09-24T15:38:28.667 に答える