Rails の order by で自分を優先的に取得する(MySql 限定)
- POST
確認環境 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 を指定しないと自分以外が優先的に並び替えられてしまう)