問題タブ [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-on-rails - Rails はデフォルトのスコープ グローバルをオーバーライドします
私は Rails 3.2 アプリケーションを持っており、多くのクライアントと 1 つのアプリケーションに対して 1 つのデータベースを使用したいと考えています。したがって、すべてのモデルに対して というフィールドを作成しました。今度は、ロギング ユーザーaccount_id
のベースで行をフィルタリングするためのグローバル スコープを追加します (セッション パラメータです)。したがって、初期化でファイルを作成し、これらのコードを配置しましたaccount_id
account_id
ユーザーでログインした場合account_id=2
はすべて問題ありませんが、同時に別のブラウザーまたはコンピューターにログインした場合account_id=3
...多くのエラーがあり、ログにアプリケーションaccount_id=2
が同時に使用されていることがわかりaccount_id=3
ました。
解決策はありますか?どうすれば書き直せdefault_scope(scope = {})
ますか?他のアイデア?
ruby-on-rails - コントローラー内ではなく、Rails 5 モデルの default_scope で includes メソッドを使用する
通常、Railsモデルにデフォルトスコープを持たない方が良いことは理解しています.includes
が、モデルのたびにコントローラーにメソッドを含めるのではなく、いくつかの関連付けが常に必要になるため、デフォルトスコープに含めることをお勧めしますモデルそのもの。
この変更の大きな欠点はありますか (コントローラーではなく.includes
モデルに移行することdefault_scope
)?
たとえば、次のようになります。
コントローラーに入れる代わりに:
Brand.includes(:car_model)
includes
Brand モデル自体にこれを入れたい:
default_scope { includes(:car_model) }
ノート:
私が見たところ、弾丸は今、同じモデルと含まれている関連付けで以前に使用していた熱心なロードを使用する代わりに、これを回避するために熱心なロードを回避していると言っています。includes