学習記録

アウトプット用に作りました

scope

繰り返し利用される絞り込み条件を読みやすくすることができる。

絞り込み条件とは

クエリー(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にクエリーの情報が含まれてメソッドとして使えるから、
コントローラーで複数のクエリーを書かなくて済む。