[解決済み] 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 の説明
関連
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Ruby on RailsでJSON出力を "きれい "にフォーマットする方法
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Devise Admin Roleの追加【終了しました
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?