Open5
Rails モデルのscope機能を理解する
ピン留めされたアイテム
scopeとは
モデルで条件を定義し名前を付け、それをコントローラーからメソッドのように呼び出せるようにする機能。
基本構文
scopeの作成
app/models/モデル.rb
class モデル < ApplicationRecord
scope :スコープの名前, -> { 条件式 }
end
呼び出し
app/controllers/モデルs_controller.rb
@foo = モデル.スコープの名前
引数を渡すことも可能
引数ありscopeの作成
app/models/モデル.rb
class モデル < ApplicationRecord
scope :スコープの名前, -> (仮引数){ 条件式 }
end
呼び出し
app/controllers/モデルs_controller.rb
@bar = モデル.スコープの名前(引数)
メリット
- 共通化できる
- 名前づけにより、controllerで条件を絞り込むよりも直感的に行える
- クラスメソッドよりも簡潔に記述できる