1. ホーム
  2. ruby-on-rails

[解決済み] railsのscope/named_scopeとは何ですか?

2022-09-22 20:28:54

質問

最近、インターンシップを始めました。私の雇用主はruby on railsを使用しており、私は理解するために調べる必要がある新しい構文に頻繁に遭遇します。私は named_scope の良い説明を求めてググりましたが、私がこれまでに見つけたのは、ストレートな定義や紹介ではなく、それを高く評価しているブログ記事がほとんどでした。

ruby on rails の named_scope (現在は単に scope と呼ばれています) とはいったい何なのでしょうか?

どのように解決するのですか?

スコープはコレクションのサブセットです。複雑に聞こえますか?そうではありません。これを想像してみてください。

あなたにはユーザーがいます。今、これらのユーザーの一部はニュースレターを購読しています。User Databaseにフィールドを追加して、ニュースレターを受信するユーザーをマークしました(user.subscribe_to_newsletter = true)。当然、ニュースレターを購読しているユーザーを取得したい場合があります。

もちろん、常にこれを行うことができます。

User.where(subscribed_to_newsletter: true).each do #something

いつもこのように書くのではなく、次のようにすることもできます。

#File: users.rb
class User < ActiveRecord::Base
  scope :newsletter, where(subscribed_to_newsletter: true)
  #yada yada
end

もし、あなたが Rails 4 またはそれ以降 を使用している場合は、代わりにこれを実行します。

#File: users.rb
class User < ActiveRecord::Base
  scope :newsletter, -> { where(subscribed_to_newsletter: true) }
  #yada yada
end

これだけで、購読者にアクセスすることができます。

User.newsletter.each do #something

これは非常に単純な例ですが、一般的にスコープは作業を容易にする非常に強力なツールになります。

このリンクをご覧ください。 API の説明