問題タブ [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.

0 投票する
1 に答える
2781 参照

ruby - Sequel の default_scope

ActiveRecord にはdefault_scope、デフォルトのスコープを指定するクラス メソッドがあります。例えば

でこれを行うにはどうすればよいSequel::Modelですか?

編集:

グーグルで調べた後、最終的にいくつかの有用な情報を見つけました。

生成されたクエリは次のようになります。

ちなみに: に相当するのunscopedunfiltered:

しかし、一つ問題があります。フィルタリングされていないデータセットから取得したユーザーを更新しようとすると、指定されたデータセットを使用してユーザーを更新しようとします。

だから私は最初に戻っています。これに対する回避策はありますか?

0 投票する
2 に答える
9161 参照

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'`).

助言がありますか?

0 投票する
1 に答える
168 参照

ruby-on-rails - Rails 3 のすべてのモデルに default_scope を追加する

プロジェクトのすべてのモデルに「default_scope」を追加しようとしています:

この default_scope をすべてのモデルに自動的に追加する方法はありますか?

おそらくモジュールを使用していますか?

0 投票する
2 に答える
2968 参照

inheritance - Rails: ActiveRecord の default_scope とクラスの継承

私のアプリには、ユーザーだけでなく、管理者とスーパー管理者もいます。3 つすべてが同じ属性を共有するため、「user」、「admin」、または「super_admin」のいずれかの追加属性「role」を持つテーブルを 1 つだけ使用したいと思います。

SuperAdmin.all今、私は SuperAdmins のみを取得するようなことをしたいと考えています。default_scope を使用すると、そこに到達するようです:

今、私は default_scope も管理者に追加しています:

ああ、そして... SuperAdmin.all はもう何も返しません。何故ですか?

0 投票する
2 に答える
342 参照

sql - 条件の動的値を無視するデフォルトのスコープ

私のアクティビティモデルには、デフォルトのスコープがあります。

問題はLog.get_subject_idにあり、デフォルト値は0です。これが私のログモデルです。

コントローラのLog.set_subject_id(10)を介して@@ subject_idの値を変更してから、Activity.allを試してみると、常に悪い結果が得られます。SQL:

問題はどこにありますか?ありがとう!

0 投票する
0 に答える
522 参照

view - Rails 3で編集パスやアクションを「スコープ解除」するにはどうすればよいですか?

現在、私はdeviseを使用して単純なRails 3 Webアプリケーションに取り組んでいます。ユーザーがサインアップすると、Accountが作成されます。これがアカウント モデルの本質です。

Person モデルの本質:

個人 (基本的にはユーザー プロファイル) はアカウントの作成後に作成されることがわかるように、の既定値はpublishedですfalse。サインアップすると、ユーザーはサインインし、ホームページにリダイレクトされますedit_person_path(current_account.person)

default_scopefor 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ですか?

0 投票する
2 に答える
2530 参照

ruby-on-rails - パラノイアのデフォルト スコープを使用した削除済みレコードのイーガー ロード

パラノイアの宝石を使用して、レコードを「ソフト削除」しています。ここで、関連付けられたモデルに対して、これらのレコード (一部は削除されている可能性があります) を熱心にロードする必要があります。default_scopeパラノイアは、これを「パラノイド」モデルに追加します。

したがって、実際には、これらの(単純化された)モデルがあります。

私が達成しようとしているのは、注文にアクセスするときに製品を熱心にロードすることです:

これ ( Rails3 で関連付けられたリレーションでスコープ外を使用する方法から) は、ここでは機能しません。

条件を追加belongs_toするためのカスタム関係を作成できることはわかっていますが(入れ子になった関連付けとスコープを Eager でロードする場合のように)、既存の関係を削除する方法を見つけることができません。

質問:既定のスコープが熱心な読み込みクエリに適用されないようにするにはどうすればよいですか?

0 投票する
1 に答える
247 参照

ruby-on-rails - Rails 3 複数の default_scope 英数字

テーブルにコードの列があります。それらは AAA-XXXX-YYYwhereの形式です。

  • AAAアルファベット順です
  • XXX数値です
  • YYY数値です

でアルファベット順の並べ替えを使用しAAA、次に で数値の並べ替えを使用し、次に default_scopeXXXXで数値の並べ替えを使用したいYYYので、それらにインデックスを付けると、そのように並べ替えられます。

列で英数字の並べ替えを行った場合、次のようになります。

しかし、数値ソートを使用すると、111 は 2 よりも大きくなります。

EDIT:AAA の長さは固定されていません。したがって、「AA」または「BBBB」または「CCC」の可能性があります。SQL SUBSTRING の使用について言及されていますが、位置が常に設定されているわけではありません。

EDIT2:おそらく、この並べ替えは default_scope で行う必要があることに言及する必要があるため、Object.all にアクセスすると、デフォルトでこのように並べ替えられます。

ご協力いただきありがとうございます!

0 投票する
0 に答える
69 参照

ruby-on-rails - モデルとネストのすべてのクエリで where close を強制する

私は最初に を使用しdefault_scopeてすべてのリクエストに条件を強制することを念頭に置いていましたが、うまくいかないようです。

たとえば、私が持ってProduct.include(:prices)いる場合、デフォルトのスコープは使用されません。それが正しい動作かどうかはわかりません。

default_scopeの価格は次のようなものです:

私はレールに移植された「CRM」に取り組んでおり、私たちが興味を持っている唯一のタイプの価格は「通常の」価格です。どこでもコードを編集できますが、データベースから価格を照会する必要がある場合はいつでも条件を「適用」する方がはるかに簡単です。同じ理由でnamed_scope、多くのリファクタリングが必要になる可能性があるため、現時点では使用も代替手段ではありません。

機能するはずですが、機能しないための詳細情報...

実際の呼び出し

プロダクト

編集

レール 3.2.8