tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

【rails】モデルのscopeについて

メソッドチェーンなどで長くなった一連の処理を別名をつけて短い名前で呼び出せるようにしたもの。モデルで定義する。
複雑なSQLを記述する時に便利。
スコープを定義する際、別で定義したスコープを使うこともできる。

#モデルで定義
class User < ActiveRecord::Base
  scope :user_select, -> { where(user_id: 1).limit(10) }
end

#コントローラー等で使用
class PostsController < ApplicationController
  posts = Post.user_select
end

#引数を取ることもできる
scope :user_select, -> (count) { where(user_id: 1).limit(count) }

参考 https://qiita.com/ozin/items/24d1b220a002004a6351 
https://pikawaka.com/rails/scope