と思って調べたら、Rails ガイドに、
スコープでのメソッドの設定は、クラスメソッドの定義と完全に同じ (というよりクラスメソッドの定義そのもの) です。どちらの形式を使用するかは好みの問題です。
と、言われたので、 特に必然性は無いらしい
ちなみに、 引数を使う場合はクラスメソッドを推奨するそうです
スコープで引数を使用するのであれば、クラスメソッドとして定義する方が推奨されます。クラスメソッドにした場合でも、関連オブジェクトからアクセス可能です。
あと、適当にぐぐったら「以前の時代は特別なものだったけど、今は別に使わなくてもよいのでは?」という話を見つけて、それもそうかという気持ちになりました
追記
こちらの記事の「追記」にあるように「 ActiveRecord::Relation
を返す chainable
な検索処理は scope
で書く」というスタイルも、model 内でのメソッドの役割が明確になって良いのかもしれないですね