問題一覧に戻る
中級高度なデータベース
問題40: スコープ - scope定義

Railsのスコープを使って再利用可能なクエリインターフェースを定義する方法を学習します。スコープを使うと、よく使うクエリをモデルのメソッド呼び出しとして指定でき、コードをより読みやすくDRYにします。スコープはチェーンできるため、クリーンで構成可能な方法で複雑なクエリを作成できます。

class Post < ApplicationRecord
# 公開された投稿のスコープ
:published, -> { where(: true) }

# 最近7日間の投稿
scope :recent, { where('created_at > ?', 7.days.ago) }

# パラメータ付きスコープ
scope :by_author, -> () { where(user_id: author_id) }
end