2018年7月24日火曜日

Rails5 scope vs self.method [winner scope 勝者はscope]

SEOはあまり関係なくなってきた中の人です。

Rails5 で作業中。ModelでStrong paramsから取得したパラメータを条件にwhereで絞り込みを掛けるにあたり当初self.method_nameとしていましたが、挙動が大きく違うのに気づいてscopeに切り替えました。

  1. Mode.all.method_name(strong_params).to_sqlは機能しない。
  2. Mode.where('foo=?',bar).method_name(strong_params)だとwhereで与えた条件が無視される。
1.はデバッグ時にクエリが確認できない。
2.は当然バグに。

 scope一択です。