問題タブ [has-many-through]

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 投票する
0 に答える
1566 参照

ruby-on-rails - Ruby on Rails-has_many:through withnested_attributes_for

グーグル、フォーラム、グループなどを介してオンラインで多くを見つけることができないという問題に遭遇しているので、私は手を挙げて、私より賢い人たちに助けを求めるつもりです:)

2つのモデル間で1対1の関係を持つnested_attributes_forを使用していたRailsプロジェクトのセットアップがあります。それは非常に簡単に機能し、私が最近プロジェクトを変更してhas_many:through関係になるまで、予想どおりに機能しました。

コードは次のようになります。

Pモデル:

Fモデル:

F_Pモデル:

コードが上記のようである限り、すべてが正常に機能します(もちろん、Web GUIを介したCRUDアクションを除く)。ただし、ネストされた属性部分をPモデルに追加するとすぐに、次のようになります。

テストが失敗し、GUIが機能します(検証が強制されないことを除いて)。

この検証をnested_attributes_forと一緒にうまく機能させるための適切な方法に関するアイデアはありますか、それとも1年ほど前のように処理するためにPコントローラーで独自のCRUDアクションを作成する必要がありますか?

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

ruby-on-rails - 結合テーブルモデルからの関連レコードの更新

私はhas_manyを持っています:管理を通じてプレーヤーをチームに関連付ける関係を通して。

チームテーブルにカウンター(カウンターキャッシュのようなもの)を配置して、週の初めから新しい関連付けがいくつあるかを教えてもらいたいです。もちろん、カウンターキャッシュは、これまでに作成されたすべての関連付けを常に提供するため、機能しません。

管理モデル内から関連するチームを更新してみました。これは決して成功しません。関連付けられたチームへの増分は正常に保存されているように見えますが、関連付けが作成された後も、カウンターは0のままです。

オブザーバーも使ってみました。オブザーバーが期待どおりに呼び出され、チームを取得できましたが、更新は保存されませんでした。

明らかな何かが欠けていると確信しています!これを実装するためのレールの方法は何ですか?

問題を説明するためにgithubをセットアップしましたが、rakespecの実行は失敗します。

http://github.com/steveybaby/assoc_problem

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

ruby-on-rails - has_many:through関係で外部キーを指定する

ユーザー、プロジェクト、割り当ての3つのモデルがあります。

ユーザーhas_manyは割り当てを通じてプロジェクトを作成します。ただし、Assignmentには、実際にはユーザーに関連する2つの外部キーがあります:(user_idプロジェクトを割り当てられたユーザーをcompleter_id表す)と(プロジェクトを完了したユーザーを表す)。

多くの場合、同じuser_idcompleter_idなります(プロジェクトを割り当てられたユーザーがプロジェクトを完了した場合)。ただし、別のユーザーがそれを完了すると、user_idとcompleter_idは異なります。

私のユーザーモデルには、次のものがあります。

モデル内のユーザーの外部キーとして、ではなく:completed_projectsを使用する、と呼ばれる別の関連付けを作成したいと思います。これを行うことは可能ですか?completer_id:through:user_id

そして、余談ですが、私はその:foreign_key選択肢を知っています。ただし、を使用する場合はこのオプションが無視されるため、このオプションを使用:throughせずにこれを行う方法があるかどうかを知りたいと思います。

最後に、この方法でそれを行うことができず、誰かがより良い方法を考えることができる場合、私は他のデザインを受け入れることを言及する必要があります。

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

ruby-on-rails - Rails:追加の詳細を持つ has_many?

私は完全な Ruby/Rails 初心者ではありませんが、まだかなり未熟で、モデルの関係を構築する方法を理解しようとしています。私が考えることができる最も簡単な例は、料理の「レシピ」のアイデアです。

レシピは、1 つまたは複数の材料と、各材料に関連付けられた数量で構成されます。データベースにすべての成分のマスターリストがあるとします。これは、次の 2 つの単純なモデルを示唆しています。

Recipes を Ingredients に関連付けるだけなら、適切なbelongs_toandを追加するだけで簡単has_manyです。

しかし、追加情報をその関係に関連付けたい場合はどうすればよいでしょうか? それぞれRecipeに が 1 つ以上Ingredientsありますが、の数量を示したいと思いますIngredient

それをモデル化するRailsの方法は何ですか? それはaの線に沿ったものhas_many throughですか?

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

ruby-on-rails - Railsのクラス名/タイプがポリモーフィックで機能しないhas_many:through

借方と貸方を管理する請求システムがあります。基本的に、請求額は借方の合計から得られ、残高は貸方の合計を合計額から差し引くことによって算出されます。

私はこれを4つのモデルで行っています。

  1. 請求書
  2. ラインアイテム
  3. デビット
  4. クレジット

それが機能する方法は、recordableと呼ばれるポリモーフィックな関連付けを持つ結合モデル(Line Item)を介したものです。一見、すべてが正しく機能しているように見えます。ただし、ラインアイテムを調べると、recordable_idは正常に表示されますが、recordable_typeはnilであることがわかります。

コードの内訳は次のとおりです。

誰かが私をここで正しい方向に向けることができますか?

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

sql - Railsで名前付きスコープを使用して包括的クエリではなく排他的クエリを作成するにはどうすればよいですか?

渡された複数のサービスに基づいてサービスプロバイダーを見つけるアプリケーションを作成しました。これはhasmany_throughを介して行われるため、結合オブジェクトがあります。基本的に、ユーザーがサービスAとサービスBのサービスプロバイダーを要求した場合、私のスコープは、サービスAとサービスBの両方を提供するサービスプロバイダー、またはサービスAまたはサービスBのいずれかを提供する他のサービスプロバイダーを返します。これの代わりに、両方のサービスを提供するプロバイダーのみに制限してください。

私のスコープは次のようになります。

ご覧のとおり、これを行うためにIN演算子を使用しています。しかし、INは、私が本当に欲しいのが「サービスAとサービスBの両方を持っているサービスプロバイダーを私に与えてください」であるときに、「サービスAまたはサービスBを持っているプロバイダーを私に与えてください」と言うようなものです。

このタイプのフィルタリングを単一のクエリで実行することは可能ですか、それとも複合クエリを実行するか、必要なサービスのすべてをサポートしていない場合は結果をループしてリストから削除する必要がありますか?

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

ruby-on-rails - rails has_manyリレーションシップ(4モデル)とビューでのアクセス方法

私は4つのモデルを持っています:transac、transac_data、item、dvd_details

「transac」ビューで、次のようなすべてのモデルのコンテンツにアクセスする必要があります。

しかし、transacから「最も遠い」「DvdDetails」モデルからいくつかの情報にアクセスする必要もあります。

私は、このようなことをしても実際には機能しないことに気づきました。

「transac」ビューのインデックスでこれを行います

これを達成するために何をする必要がありますか?

どんな助けでも大歓迎です!ありがとうございました!

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

ruby-on-rails - has_manyでの結合テーブルのフィルタリング:RoRでのスルー

Rails has_many:throughパラダイムを使用してTranslationテーブルを介してLanguageandProductsテーブルに結合する次のモデルがあります。

特定の製品の英語翻訳を見つけたいです。

関連する言語と翻訳を一覧表示できます。

これは印刷します:

(この製品には英語とフランス語の翻訳があります。)

prod言語に対応する翻訳を取得するにはどうすればよいenですか?

それが意味をなさない場合は、同等のSQLを次に示します。

SELECT t.* FROM products p, translations t, languages l WHERE l.id = t.language_id AND p.id = t.product_id AND l.lang_code = 'en';

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

ruby-on-rails - ネストされたプラグインと名前付きスコープは多数あります

ユーザーモデル(:name、:password、:email)、イベントモデル(:name、:etc)、インタレストモデル(:name)[> all singular <]

次に、2つの結合テーブル->UsersInterestsとEventsInterestsを作成しました。それぞれに主キーは含まれず、それぞれuser_id/interest_idとevent_id/interest_idのみで構成されます。[>複数形<]

私のモデルは、 ネストされたプラグインを介して多くを使用します

Whew..okそこで、特定のユーザーと関心を共有するすべてのイベントを検索するnamed_scopeを作成したいと思いました。これが誰かが私を助けてくれたコードです。

コントローラから実行した場合=>

エラーが発生します:

誰かが私が台無しにしたものを見ることができますか?