問題タブ [default-scope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Sequel の default_scope
ActiveRecord にはdefault_scope
、デフォルトのスコープを指定するクラス メソッドがあります。例えば
でこれを行うにはどうすればよいSequel::Model
ですか?
編集:
グーグルで調べた後、最終的にいくつかの有用な情報を見つけました。
生成されたクエリは次のようになります。
ちなみに: に相当するのunscoped
はunfiltered
:
しかし、一つ問題があります。フィルタリングされていないデータセットから取得したユーザーを更新しようとすると、指定されたデータセットを使用してユーザーを更新しようとします。
だから私は最初に戻っています。これに対する回避策はありますか?
yii - yii のリレーションを参照してデフォルト スコープを適用する
yii のモデルにデフォルト スコープを適用する方法に関するドキュメントがあまり見つかりません。誰かが説明してくれたり、正しい方向に向けてくれるのではないかと思っていました。
私の質問の簡単なバージョン:
リレーションをデフォルト スコープに追加したり、モデルのすべての AR 検索にデフォルトで「with」基準を追加したりすることは可能ですか?
私の質問の長いバージョン:
私のアプリの簡単な要約:
私は2つのモデルを持っていprovider
ますitem
. プロバイダーは多くのアイテムを持つことができますが、各アイテムは 1 つのプロバイダーしか持つことができない am:1 関係があります。
これまでのところ、次の関係があります。
私のアイテム モデル内では、すべてのオフライン アイテムを除外する defaultScope を既に取得しています (つまり、 に設定されているアイテムのみを表示しますoffline = false
)。
私が今やりたいことは、プロバイダーがオフラインに設定されているアイテムを除外することです (つまりprovider.offline = false
、現在の と並んでいるアイテムのみを表示しますitem.offline = false
)。
私は defaultScope で providers テーブルに参加しようとしました:
ただし、JOIN は ON ステートメントの後に適用され、エラーが発生します ( CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'provider.offline' in 'on clause'
)。
また、defaultScope に with 基準を追加しようとしました。
しかし、同じエラーが発生します: SQLSTATE[42S22]: 列が見つかりません: 1054 不明な列 'provider.offline' in 'on clause'`).
助言がありますか?
ruby-on-rails - Rails 3 のすべてのモデルに default_scope を追加する
プロジェクトのすべてのモデルに「default_scope」を追加しようとしています:
この default_scope をすべてのモデルに自動的に追加する方法はありますか?
おそらくモジュールを使用していますか?
inheritance - Rails: ActiveRecord の default_scope とクラスの継承
私のアプリには、ユーザーだけでなく、管理者とスーパー管理者もいます。3 つすべてが同じ属性を共有するため、「user」、「admin」、または「super_admin」のいずれかの追加属性「role」を持つテーブルを 1 つだけ使用したいと思います。
SuperAdmin.all
今、私は SuperAdmins のみを取得するようなことをしたいと考えています。default_scope を使用すると、そこに到達するようです:
今、私は default_scope も管理者に追加しています:
ああ、そして... SuperAdmin.all はもう何も返しません。何故ですか?
sql - 条件の動的値を無視するデフォルトのスコープ
私のアクティビティモデルには、デフォルトのスコープがあります。
問題はLog.get_subject_idにあり、デフォルト値は0です。これが私のログモデルです。
コントローラのLog.set_subject_id(10)を介して@@ subject_idの値を変更してから、Activity.allを試してみると、常に悪い結果が得られます。SQL:
問題はどこにありますか?ありがとう!
view - Rails 3で編集パスやアクションを「スコープ解除」するにはどうすればよいですか?
現在、私はdeviseを使用して単純なRails 3 Webアプリケーションに取り組んでいます。ユーザーがサインアップすると、Account
が作成されます。これがアカウント モデルの本質です。
Person モデルの本質:
個人 (基本的にはユーザー プロファイル) はアカウントの作成後に作成されることがわかるように、の既定値はpublished
ですfalse
。サインアップすると、ユーザーはサインインし、ホームページにリダイレクトされますedit_person_path(current_account.person)
。
default_scope
for Person を設定した後、Routing Error: No route matches {:action=>"edit", :controller=>"people", :id=>nil}
が原因で a がスローされましたedit_person_path(current_account.person)
。
これに対する私の解決策は、に変更edit_person_path(current_account.person)
することでしたedit_person_path(Person.unscoped { current_account.person} )
。
私が今抱えている問題は、ページが正常にレンダリングされているにもかかわらず、編集リンクをクリックすると次の例外が発生することです:
編集アクションのスコープを一時的に解除する最善の方法は何PeopleController#edit
ですか?
ruby-on-rails - パラノイアのデフォルト スコープを使用した削除済みレコードのイーガー ロード
パラノイアの宝石を使用して、レコードを「ソフト削除」しています。ここで、関連付けられたモデルに対して、これらのレコード (一部は削除されている可能性があります) を熱心にロードする必要があります。default_scope
パラノイアは、これを「パラノイド」モデルに追加します。
したがって、実際には、これらの(単純化された)モデルがあります。
私が達成しようとしているのは、注文にアクセスするときに製品を熱心にロードすることです:
これ ( Rails3 で関連付けられたリレーションでスコープ外を使用する方法から) は、ここでは機能しません。
条件を追加belongs_to
するためのカスタム関係を作成できることはわかっていますが(入れ子になった関連付けとスコープを Eager でロードする場合のように)、既存の関係を削除する方法を見つけることができません。
質問:既定のスコープが熱心な読み込みクエリに適用されないようにするにはどうすればよいですか?
ruby-on-rails - Rails 3 複数の default_scope 英数字
テーブルにコードの列があります。それらは
AAA-XXXX-YYY
whereの形式です。
AAA
アルファベット順ですXXX
数値ですYYY
数値です
でアルファベット順の並べ替えを使用しAAA
、次に で数値の並べ替えを使用し、次に default_scopeXXXX
で数値の並べ替えを使用したいYYY
ので、それらにインデックスを付けると、そのように並べ替えられます。
列で英数字の並べ替えを行った場合、次のようになります。
しかし、数値ソートを使用すると、111 は 2 よりも大きくなります。
EDIT:AAA の長さは固定されていません。したがって、「AA」または「BBBB」または「CCC」の可能性があります。SQL SUBSTRING の使用について言及されていますが、位置が常に設定されているわけではありません。
EDIT2:おそらく、この並べ替えは default_scope で行う必要があることに言及する必要があるため、Object.all にアクセスすると、デフォルトでこのように並べ替えられます。
ご協力いただきありがとうございます!
ruby-on-rails - モデルとネストのすべてのクエリで where close を強制する
私は最初に を使用しdefault_scope
てすべてのリクエストに条件を強制することを念頭に置いていましたが、うまくいかないようです。
たとえば、私が持ってProduct.include(:prices)
いる場合、デフォルトのスコープは使用されません。それが正しい動作かどうかはわかりません。
私default_scope
の価格は次のようなものです:
私はレールに移植された「CRM」に取り組んでおり、私たちが興味を持っている唯一のタイプの価格は「通常の」価格です。どこでもコードを編集できますが、データベースから価格を照会する必要がある場合はいつでも条件を「適用」する方がはるかに簡単です。同じ理由でnamed_scope
、多くのリファクタリングが必要になる可能性があるため、現時点では使用も代替手段ではありません。
機能するはずですが、機能しないための詳細情報...
実際の呼び出し
プロダクト
編集
レール 3.2.8