問題タブ [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.
yii - Yii フレームワークのリセット defaultScope
Yii フレームワークでは、どうすれば無効にできdefaultScope
ますか?
resetScope(false)
andで試しましresetScope(true)
たが、役に立ちませんでした。
どんな助けでも本当に感謝しています。
ruby-on-rails - client_side_validations gemでdefault_scopeをオーバーライドするには?
私はdefault_scope
、スコープがcurrent_user.company
. サインアップ ページで client_side_validations gem を使用しています。これは、テナント セットがないことを意味します。
一意性バリデーターが@user.email
default_scope で実行されると、検証が適切に実行されなくなり ( company_id
nil であるため)、常に一意の結果のように見えます。
私のユーザーモデル:
このクエリは、電子メールを検証するときに実行されます。
ユーザー モデルからを削除するdefault_scope
と、正しい結果と適切な検証が得られます。
default_scope
この gem が電子メールバリデーターを実行するときにオーバーライドする最も実用的な方法は何ですか?
ruby-on-rails - この default_scope が機能しないのはなぜですか?
notified: true
ユーザーが論理的に削除されるように、デフォルトのスコープを設定しようとしています。notified
ブール値のデータ列です。
これは私が試したことです:
ただし、この方法では、ユーザーはどのスコープにも表示されません。つまり、すべてのユーザーは論理的に削除されたように見えnotified: false
ますnotified: nil
。スコープの何が問題になっていますか?
ruby-on-rails - デフォルトのスコープはレールで引数を取ることができますか?
現在のユーザーに応じてすべてのクエリをフィルター処理する既定のスコープを作成したいと考えています。現在のユーザーを引数として default_scope に渡すことは可能ですか? (これは通常のスコープで実行できることを知っています)そうでない場合、別の解決策は何ですか?
ruby-on-rails - has_many :through と default_scope での奇妙な動作
ユーザーと企業向けの基本的な has_many through: を取得しました。
次に、ユーザーCompanyMethods
に a を追加するこの lib があります。default_scope
したがって、 を呼び出すUser.find_by_email('michael@widgetworks.com')
と、 によってスコープが設定されたユーザーのみが返されAuthorization.current_company_ids
ます。
SQLは次のとおりです。
多くの場合、これはすべてうまくいきます。しかし、ここからファンキーになり始めます。
別のオブジェクト、たとえば CreditCard が User を通過するアソシエーションを呼び出すとcompanies.id
、子オブジェクトでスコープが呼び出されます。
生成される sql は次のとおりです。
credit_card.orders
SQL クエリが " companies
. id
IN (4)" を呼び出しreservation
ているため、エラーをスローしますuser
。
through
アソシエーションを使用する代わりにreservations
、CreditCardという名前のメソッドを作成するだけで問題を回避できました。
これで問題はほぼ解決しますが、優れた解決策ではありません。
ruby-on-rails - ActiveRecord .exists?() と default_scope の奇妙さ
ユーザーをdefault_scope
一連の企業に制限する User クラスがあります。
期待どおりに、またはUser.last
すべての作業と範囲を呼び出します。User.find_by_email('mhayes@widgetworks.com')
User.find(55557)
呼び出すUser.exists?(id)
と、奇妙なエラーがスローされます。
基本的に、私がこれを取得している場合、それcompanies
は のコラムではないと言ってUser
います。SQLをステートメントにコピーしても、where
正しく評価されます。
と評価の順番があり、どういうわけか前に呼び出されていると思わせてdefault_scope
くれexists?
ますdefault_scope
。
私が電話した場合:
動作します。そして、これがdefault_scope
が行っていることなので、default_scope
スコープが失敗していないことはわかっています。
ruby-on-rails - Devise ユーザーがデフォルトの範囲外にいるときにログインできるようにするにはどうすればよいですか?
認証にDevise 3.4を使用するRails 4アプリがあります。これは、ユーザーを禁止する機能でカスタマイズしました(単純なブール列users.banned
、デフォルトのfalseを使用)。このUser
モデルには、default_scope
禁止されていないユーザーのみを返す もあります。
ここに問題があります - 禁止されたユーザーは、ログイン後に何もできなくても、ログインできるようにしたいのです (基本的に、「禁止されています」というページが表示されるだけです)。しかし、それはdefault_scope
Deviseをつまずかせているようです. ログインするか eg を呼び出すと、Devise はorauthenticate_user!
のような基本的な ActiveRecord メソッドの 1 つを使用して現在のユーザーを見つけようとしますが、デフォルトのスコープ外にあるためできません。したがって、Devise はユーザーが存在しないと判断し、ログインに失敗します。find
find_by
Deviseにデフォルトのスコープを無視させるにはどうすればよいですか?