問題タブ [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 に答える
137 参照

ruby-on-rails - Rails はデフォルトのスコープ グローバルをオーバーライドします

私は Rails 3.2 アプリケーションを持っており、多くのクライアントと 1 つのアプリケーションに対して 1 つのデータベースを使用したいと考えています。したがって、すべてのモデルに対して というフィールドを作成しました。今度は、ロギング ユーザーaccount_idのベースで行をフィルタリングするためのグローバル スコープを追加します (セッション パラメータです)。したがって、初期化でファイルを作成し、これらのコードを配置しましたaccount_idaccount_id

ユーザーでログインした場合account_id=2はすべて問題ありませんが、同時に別のブラウザーまたはコンピューターにログインした場合account_id=3...多くのエラーがあり、ログにアプリケーションaccount_id=2が同時に使用されていることがわかりaccount_id=3ました。

解決策はありますか?どうすれば書き直せdefault_scope(scope = {})ますか?他のアイデア?

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

ruby-on-rails - コントローラー内ではなく、Rails 5 モデルの default_scope で includes メソッドを使用する

通常、Railsモデルにデフォルトスコープを持たない方が良いことは理解しています.includesが、モデルのたびにコントローラーにメソッドを含めるのではなく、いくつかの関連付けが常に必要になるため、デフォルトスコープに含めることをお勧めしますモデルそのもの。

この変更の大きな欠点はありますか (コントローラーではなく.includesモデルに移行することdefault_scope)?

たとえば、次のようになります。

コントローラーに入れる代わりに:

Brand.includes(:car_model)

includesBrand モデル自体にこれを入れたい:

default_scope { includes(:car_model) }

ノート:

私が見たところ、弾丸は今、同じモデルと含まれている関連付けで以前に使用していた熱心なロードを使用する代わりに、これを回避するために熱心なロードを回避していると言っています。includes