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
Active Record の scope を使う必然性ってあるの? | kasei_san のブログ
ActiveRecord4 でこんな SQL クエリどう書くの? Merge 編 | TIM Labs
コーディング規約をまとめてみた (Rails 編) | bojovs::blog
よく使うクエリは model の中に scope を書こう – Qiita
モデルの外では名前付きスコープだけを使おう 翻訳 | TechRacho
Ruby On Rails の scope メソッドで検索を効率化する | ゼロイチ
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]