確認環境
- ruby: ruby 2.5.3
- rails: rails 5.2.2
方法
- Mysqlの
FIELD
関数を使用する※FIELD
関数の結果でORDER BY
する
例. レコードを order
昇順, user_id
昇順で並び替える場合
※同じ順位の場合は自分を優先
order(:order, ["field(user_id , #{current_user.id}) desc"], :user_id)
※ ポイントとしては第2ソートキーの前に ORDER BY FIELD
を使用すること
また、ORDER BY FIELD
で指定した分に対して desc
を指定すること
※ desc
を指定しないと自分以外が優先的に並び替えられてしまう)