繰り返し利用される絞り込み条件を読みやすくすることができる。
絞り込み条件とは
クエリー(SQLを実行したときにデータベースに送る命令文)のメソッドを使って、データベースのデータを絞り込むときに使う。
(例) Userのidを降順にして5つデータを表示する。
User.order(id: desc).limit(5)
scopeを使う
上記のメソッドを使ったデータはカンマでたくさん区切ってあって、
重複しているところに何度も同じコードを書くのも面倒で、コードを読むのも大変。
なのでscopeを使って書き換えてみる。
models/user.rb
scope :recent, -> { order(id: :desc).limit(5) }
users_controller.rb
def index @users = User.recent end
recentにクエリーの情報が含まれてメソッドとして使えるから、
コントローラーで複数のクエリーを書かなくて済む。