コントローラーで長々と検索条件を書くと読みづらいので、scopeを使って、検索条件をメソッド化してスッキリ書いてみます。
下記は、boardテーブルから、followしているuserを指定してレコードを取得する場合の書き方です。
@boards = Board.joins(:follows).where('follows.user_id = ?', user.id)
これをscopeを使ってスッキリ書いてみましょう。
Scopeを使ってスッキリ書く
Boardモデルに下記のようにscopeを定義します。
scope :followed_boards, -> user { joins(:follows).where('follows.user_id = ?', user.id) }
すると、先程の検索条件は、下記のようにシンプルに書くことができるようになります。
@boards = Board.followed_boards(user)
コードが読みやすくなっただけでなく、他でも使いまわしやすくなりました。
Ruby on Railsをこれから本格的に勉強したい人は「エンジニアになるための600時間のプログラミング学習に耐え抜くコツ」という記事がおすすめです。