DB問い合わせでよく使う条件を、モデルのscopeに登録することができる。
scopeなし
@active_users = User.where(status: 1).order(id: :desc)
scopeを使う
model
class User < ApplicationRecord
scope :active, -> { where(status: 1).order(id: :desc) }
controller
@active_users = User.active
scopeに引数を渡す
model
class User < ApplicationRecord
scope :status, -> (num) { where(status: num) }
controller
@active_users = User.status(1)
@not_active_users = User.status(0)
合わせ技
model
class User < ApplicationRecord
scope :status, -> (num) { where(status: num) }
scope :recent, => (int) { order(id: :desc).limit(int) }
controller
# @recent_active_users = User.where(status: 1).order(id: :desc).limit(10)
@recent_active_users = User.status(1).recent(10)