確認環境
- 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 を指定しないと自分以外が優先的に並び替えられてしまう)