kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Active Record の scope を使う必然性ってあるの?

と思って調べたら、Rails ガイドに、

スコープでのメソッドの設定は、クラスメソッドの定義と完全に同じ (というよりクラスメソッドの定義そのもの) です。どちらの形式を使用するかは好みの問題です。

と、言われたので、 特に必然性は無いらしい

ちなみに、 引数を使う場合はクラスメソッドを推奨するそうです

スコープで引数を使用するのであれば、クラスメソッドとして定義する方が推奨されます。クラスメソッドにした場合でも、関連オブジェクトからアクセス可能です。

あと、適当にぐぐったら「以前の時代は特別なものだったけど、今は別に使わなくてもよいのでは?」という話を見つけて、それもそうかという気持ちになりました

追記

こちらの記事の「追記」にあるように「 ActiveRecord::Relation を返す chainable な検索処理は scope で書く」というスタイルも、model 内でのメソッドの役割が明確になって良いのかもしれないですね