scope

参考:

scope – ActiveRecord::Scoping::Named::ClassMethods | Ruby on Rails API [Official]

使い方

class Shirt < ActiveRecord::Base
  scope :red, -> { where(color: "red") }
  scope :dry_clean_only, -> {
    joins(:washing_instructions).where(
      "washing_instructions.dry_clean_only = ?", true
    )
  }
end

参考:

Model の Scope (スコープ) の使い方 (scope メソッドと default_scope メソッド) | Rails Webook

Model の scope と lambda – Qiita

scope の引数の渡し方 – Qiita

named scope デフォルト引数 | 鳩舎

Active Record の scope を使う必然性ってあるの? | kasei_san のブログ

ActiveRecord4 でこんな SQL クエリどう書くの? Merge 編 | TIM Labs

コーディング規約をまとめてみた (Rails 編) | bojovs::blog

Rails の複雑な検索はスコープを使おう – Qiita

よく使うクエリは model の中に scope を書こう – Qiita

モデルの外では名前付きスコープだけを使おう 翻訳 | TechRacho

Ruby On Rails の scope メソッドで検索を効率化する | ゼロイチ

Rails の複雑な検索はスコープを使おう – Qiita

scope とクラスメソッドの使い分け

参考:

ActiveRecord で引数がある scope はクラスメソッドで定義しろ! | 一分一秒真剣勝負!

Active Record scopes vs class methods | Plataformatec Blog

関連レコードの条件を scope に含める

参考:

Rails で複数テーブルの joins/includes と where 検索 | EasyRamble

includes with scope – Stack Overflow

scope through status on related objects? – Stack Overflow

Scope with join on :has_many :through association – Stack Overflow

merge

参考:

Rails で子テーブルのスコープを使う | Murajun’s Style

scope を関連に変換する

参考:

How to preload Rails scopes | Justin Weiss

該当するレコードが存在しない場合に全レコードを返す

参考:

Scope returns all instead of nil – Stack Overflow

SELECT するカラムを追加する

参考:

SELECT するカラムを追加する scope を定義する | TECHSCORE BLOG

LIMIT

参考:

アソシエーションの scope を使いつつ LIMIT っぽいことをやる | blog.kymmt.com

default_scope

all で参照されるデフォルトのスコープを定義する。モデル全体に影響するため安易に使うべきではない。

参考:

Rails の default_scope は使うな、絶対 翻訳 | TechRacho

default_scope – ActiveRecord::Scoping::Default::ClassMethods | Ruby on Rails API [Official]

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です