🐈
ActiveRecord であとから ORDER 句を削除する
通常はこんなことやらないと思うんですが 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"
あんまり意図した動きじゃない気がするんですが一応動いてはいます。
Discussion