問題タブ [scopes]

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 に答える
37 参照

ruby-on-rails - マージされたスコープの関連フィールドへのアクセス

モデル: 車両 has_many 走行距離の測定値が入力されています (この特定のケースでは、車両はアワー メーターで走行しています)。

ビューでは、各車両に入力された最大の時間測定値を表示する必要があります。これには、車両モデルからの車両に関するいくつかのフィールドの表示と、マイレージ モデルから読み取った最大の関連時間のみの表示が含まれます。

私が抱えている問題は、2 つのスコープをマージすることです。

Vehicle モデルのビューの情報にしかアクセスできず、max_hours スコープの結果にアクセスする方法がわかりません。コントローラ:

<% @vehicle.each do |m| %>私が試した使用:

しかし、それを解決することはできません。(エラーは # の未定義のメソッド `mileage' です)

私が何を台無しにしているのか、またはこれを行うためのより良い方法があるかどうか、誰でも見ることができますか。どうもありがとう。

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

php - Yii: スコープを使用して関連モデルから個別のフィールド値を取得する

プロジェクト モデルの Yii の管理者ビューに取り組んでいます。

フィルター付きの列の 1 つは、プロジェクトのユーザー (所有者) です。

私はこのようなことができます:

これにより、user テーブル内のすべてのユーザーのリストが得られますが、プロジェクトを所有する個別のユーザーをプルするものを作成したいと考えています (200 人のユーザーがいますが、プロジェクトを作成する傾向があるのはほんの一握りです)。

プロジェクトとユーザーは次の方法で関連付けられています。

findAll() メソッドで一連のオプションを試しましたが、どれも機能しませんでした。スコープで何かをしようとしていません。

これまでのところ、私はこれを試しました:

私のスコープは次のように定義されています。

上記の繰り返しを何度も試しましたが、カウント 'with'=>'username' 'select'=>'username' などを失いましたが、うまく動作しないようです。

Project::model() を $model に置き換えようとしましたが、何か関係があるのではないかと思ったからです。

どんなアイデアでも大歓迎です。Yii にとっては非常に新しいものですが、これは Yii でできることのようです。

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

php - Yii: ユーザーの役割に基づいて異なるスコープを使用する

ユーザーを作成および更新できる管理者には、「管理者」と「マネージャー」の 2 つのレベルがあります。

私の User _form.php には、アカウント レベルを含む「user_type」ドロップダウンがあります。

マネージャーが「管理者」アカウントを作成することを制限し、ユーザーが自分のレコードを更新しているときにドロップダウンを完全に非表示にしたい.

a) rules() を使用してこの動作を制御する方法はありますか? b) 次のような「hideAdmin」というスコープを作成することを考えました。

次に、モデルに「scopeToUse()」というパブリック メソッドを作成します。これは次のようになります。

最後に、このようなドロップダウン リストを作成します。

「scopeToUse()」がスコープ名を返し、それが機能することを望んでいましたが、結局これを取り戻すだけです:

これを行う正しい方法についてのアイデアはありますか?

編集

@Rafay-Zia-Mir からヒントを得て、パーミッションをチェックし、必要なスコープと共に適切な CHtml::listData を返す新しいメソッドをユーザー クラスに作成しました。意図したとおりではありませんでしたが、最終結果は同じで、ビューにコードを入れすぎず、選択基準を複製する代わりにスコープを使用できました。

これはコードでした:

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

ruby-on-rails - HABTM リレーションのクラス スコープを作成するのに苦労しました

これは私の単純化された状況です:

しかしRuleたまたま STI 構造に従っています。だから私はこれを持っています:

大したことはありません、うまくいきます。Producersだから今、関連するものだけを返すスコープを作成したいProductRules

これに相当するもの:

誰でも簡単な解決策を指摘できますか?

注:すべてのプロデューサーをロードして後で選択したくないことは明らかです。適切なものだけを直接ロードしたいのです


アップデート

Railsバージョン2.3.15を使用しています

0 投票する
3 に答える
21946 参照

ruby-on-rails - Rails 4 で has_many 関連スコープに引数を渡すにはどうすればよいですか?

has_manyRails 4 では、次のように関係をスコープできます。

そのため、いつでもcustomer.orders処理済みの注文のみを取得できます。

whereしかし、条件を動的にする必要がある場合はどうすればよいでしょうか? スコープラムダに引数を渡すにはどうすればよいですか?

たとえば、マルチテナント環境で顧客が現在ログインしているアカウントの注文のみが表示されるようにします。

これが私が持っているものです:

しかし、コントローラーまたはビューで正しいアカウントを渡すにはどうすればよいでしょうか? 上記のコードを使用すると、次のようになります。

ID が 1 のアカウントのすべての注文を、一見恣意的に受け取ります。

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

ruby-on-rails - 等しくないものと関連付けのあるレール4つのスコープ

モデルのスコープに変換しようとしているインスタンス変数がコントローラーにあります。

インスタンス変数: 製品

説明:

これは、タイプが"Computer"のuser.usernameとは異なるlast_user値を持つすべての製品を示しています。また、 user_id:nil であるか、allow_multi_users属性がTRUEに設定されている製品も除外します。

私は運がゼロで次のことを試しました: Products.rb

アソシエーションを認識していないか、スコープ内で「!=」を許可していないようです。

アイデアや指針はありますか?

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

ruby-on-rails - 仮想属性を選択するRailsスコープ/クラスメソッド

私は現在has_scope、モデルのスコープ/クラス メソッドと組み合わせて宝石を使用して、UI に返される結果セットをフィルター処理しています。

Taskフィルタリングできるようにしたいモデルがありstatusます-モデルの仮想属性です。

Taskモデルには、知っておく必要のあるいくつかの属性があります

は次のstatusように計算されます。

これはおそらくこれを行う理想的な方法ではないという事実を無視して、現在、次のstatusようなフィルタリング方法を実装しています。

からの結果だけを返すことはできません。これは、 ではなくselectタイプであるためです。文脈上、配列を返すことができない/返したくない理由は、ページネーションのために結果セットが渡されるためです。ArrayActiveRecord::Relationwherekaminari

:現在使用している方法は私の要件を満たしていますが、その方法が好きではありません。もっと良い方法があるべきだと感じています。

by_statusを返すためのより良い方法を提案できる人はいActiveRecord::Relationますか?

ActiveRecord::Relationtl;dr:仮想属性のフィルタリングを返すクラス メソッドが必要です。

前もって感謝します。

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

sql - 関連付けられたモデルの数に基づくクエリ

where句の下にある関連モデルの数によってモデルのスコープを設定する必要があるプロジェクトに取り組んでいます。これは私が思いつくことができる最高のものです:

ただし、サブスクリプションが定義されていないため、機能しません。Railsクエリで、現在postgresにヒットしているモデルを参照できる方法はありますか? これが私が探しているSQLだと思います:

これは私のアプリケーションのパフォーマンスにとって非常に重要な部分なので、できれば 1 つのクエリで実行する必要があります。

編集

ところで、上記の SQL クエリが有効かどうかはわかりません。私が探していたもののアイデアを伝えるためにそこに置いただけです。