概要
ActiveRecordのrewhereメソッドに引数としてnilが渡せるようになった。 挙動としてはwhere条件がリセットされる。
# before
Post.where(id: 1).rewhere(nil).to_sql
#=> ArgumentError (Unsupported argument type: (NilClass))
# after
Post.where(id: 1).rewhere(nil).to_sql
#=> "SELECT `posts`.* FROM `posts`"
詳細
上記はreorderメソッドに挙動を合わせたもの。 reorderメソッドにnilを渡すとorder条件がリセットされる。
Post.order(:created_at).reorder(nil)
#=> "SELECT `posts`.* FROM `posts`"
コード
条件をリセットするメソッドとしてunscopeが用意されているため、 引数がnilの場合`unscope(:where)`を呼ぶことで実現している。
プルリクエスト
Allow passing nil to rewhere method by a5-stable · Pull Request #48120 · rails/rails
Motivation / Background This Pull Request has been created because Detail This change allows nil to be passed as a parameter to the rewhere method in ActiveRe...
コメント