🐈

ActiveRecord であとから ORDER 句を削除する

2024/10/06に公開

通常はこんなことやらないと思うんですが ActiveRecord で一度 .order した後にその .order を取り消したかったのでやり方を調べてみました。
明示的に ORDER 句 を取り除くメソッドはなかったんですが .reorder("") で消せるみたいです。

class User < ActiveRecord::Base
  scope :order_by_created_at, -> { order(:created_at) }
end

# こっちは ORDER 句がついてる
puts User.order_by_created_at.to_sql
# => SELECT "users".* FROM "users" ORDER BY "users"."created_at" ASC

# こっちは ORDER 句がついてない
puts User.order_by_created_at.reorder("").to_sql
# => SELECT "users".* FROM "users"

あんまり意図した動きじゃない気がするんですが一応動いてはいます。

GitHubで編集を提案

Discussion