定義して継承するようにしました。objectを採用した場合のテストコードも追加しておきます。valid?メソッドのテストについては、validationのテストでよく見る記述なので説明を省略します。searchメソッドのテストでは、Userモデルに対してsearchメソッドが一度呼び出されたかどうか確認します。rspecでメソッドが一度呼び出されたかどうか確認する記述方法は以下の資料を参考にして下さい。objectには下記のようなテストを追加します。Users::SearchQueryに対して適切なconditionsが引数で渡った時に、適切なwhereの条件が返却されるか確認します。いう設計方針を採用することが出来ました。検索ロジックを切り出すことにより、テストコードも書きやすくなります。scope化したことで、管理画面やユーザ画面でも同じ検索ロジックを再利用することが出来ます。設計も無事マージされました。最後に検索機能といったよくある機能ですが、ネット上の情報は、歴史1・2のパターンが多いように感じます。objectといった検索機能の設計の存在を知っていただき、是非実装の際参考にしていただけると嬉しいです。現在マネーフォワードでは、19卒の新卒エンジニアの募集を行なっています。