開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina
基本構文
class モデル名 < ApplicationRecord
scope :スコープ名, -> { 条件式 }
end
使用例
下記のようユーザーのIDを降順にして5つだけ表示させたいと仮定します。
users_controller.rb
User.order(id: desc).limit(5)
1.引数なし
models/user.rb
class User < ApplicationRecord
scope :recent, -> { order(id: :desc).limit(5) }
end
users_controller.rb
User.recent
2.引数あり
models/user.rb
class User < ApplicationRecord
scope :recent, -> (count) { order(id: :desc).limit(count) }
end
users_controller.rb
User.recent(5)