問題タブ [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.
ruby-on-rails - has_manyと:belongs_toをhas_many:throughに変換する
私は現在の協会を持っています:
Group :has_many Employees
とEmployee :belongs_to Group
しかし今、私は従業員を多くのグループにも関連付けたいと思っています。
この目的のために私は作ることを考えています:
groupizations group_id:integer employee_id:integer created_at:datetime
これにより、従業員モデルとグループモデルが変更されます。
多対多のrailscastsエピソードからこれらすべてを理解しています。私が混乱しているのは、今、次のコードで新しい従業員を作成していることだけです。
このコードはどのように変更されますか?groupizations
同時にデータを追加する必要がありますか?
ruby-on-rails - RailsでActiveRecordを使用して、重複ではなく1つのレコードを取得するにはどうすればよいですか?
私は次のようなモデルを持っています:
同じ会社との連絡が多い。各企業のインスタンスが1つだけ必要です。
私は次のことを試しました:
しかし、これは私が信じるすべての連絡先のすべての会社を私に示しています。少なくとも、それが出力のようになります。
会社のインスタンスが1つだけ追加されていることを確認するにはどうすればよいですか?
ruby-on-rails - has_manyを:throughオプションと関連付けるための特定のキーを宣言するにはどうすればよいですか?
私には協会があり
ます。著者にはたくさんの本があります。そして本には多くの著者がいます。
:throughオプションを使用する必要があります(「relations」という名前のテーブルを介して、「left_id」(author_idとして使用)および「right_id」(adbook_idとして使用)という名前の2つの列があります。
コンソールの場合:
では、どうすれば「book_id」を「right_id」に指定できますか?(「foreign_key」のようなオプションはありますか?)
ruby-on-rails - has_many :through、cache、touch、および counter_cache に関する問題
私はたくさんの has_many :through リレーションをアプリに持っています。接続されたオブジェクトの数など、これに関連する情報を広範囲に表示しています。ユーザーがリレーションを更新するたびに、結合テーブルが変更され、これをスイーパーでキャッチできます。
問題は、結合テーブルのエントリが削除され、破棄されないことです。関係がなくなった場合、これを検出する正当な方法がなく、キャッシュから誤解を招く情報を表示しています。:touch => true や :counter_cache => true のようなものはすべて部分的に機能します。リレーションが更新または作成されると増加します。しかし、ユーザーがリレーションを削除しても何も起こりません。:counter_cache が壊れていて、:touch がトリガーされません。
ガベージ ソリューションは、メイン モデルが保存されるときに、コントローラーで .touch を呼び出すことです。この種の作品は、しかし、それは本当に非専門家のようです. これは、コントローラーではなく、モデル ロジックにある必要があります。
私は何か大きなものを見逃しているように感じますが、これについて頭を悩ませることはできません. 誰でもこの問題について洞察を得ることができますか?
django - テンプレートでカスタマイズされた多対多スルー オブジェクトのフィールドにアクセスする方法
次のモデルを検討してください。
メンバーシップは、追加のフィールドを持つカスタマイズされた多対 5 スルー オブジェクトです。
person インスタンスがある場合、通常のコードと django テンプレート ファイルの両方で、そのすべてのメンバーシップ関係の対応する date_joined フィールドにアクセスするにはどうすればよいですか?
ruby-on-rails - has_many_through リレーションから結合モデルを取得する
私の Rails アプリには has_many_through リレーションがあります。結合モデル/テーブルを使用して、関係に関するデータを保存したいと考えています (具体的には、特定の関係が使用された回数)。
サブジェクトとの既存の関係をチェックし、存在する場合は関係のカウンターを更新し、存在しない場合は作成するクラスの1つに追加メソッドを作成しています。
例:
CoffeeDrinker は、Coffee through Cup に関連しています。CoffeeDrinker が一口飲むたびに、その特定の Cup のカウンターをインクリメントする必要があります。CoffeeDrinker が初めて一口飲むと、Cup が作成され、カウンターが初期化されます。
リレーション オブジェクトを保持するための最も簡単かつ/または最も正しい方法は何ですか?
ruby-on-rails - Railsでは、実際のレコードを削除せずに「結合テーブル項目」を破棄する方法は?
混乱しています。結合テーブルのレコードを削除/破棄する方法がわかりません:
リレーション アイテムを破棄したいだけの場合はどうすればよいですか?
ruby-on-rails-3 - Rails3は質問を通じてhas_manyをネストしました
アプリケーションをRails3にアップグレードすることを計画しています。私たちがかなり使用したプラグインの1つは、nested_has_many_throughです。このプラグインは古く、メンテナンスされていないようで、新しいRails3アプリケーションでは機能していないようです。
簡単な例:
誰かがこれを処理するためのベストプラクティスの方法、または動作するRails3プラグインを推奨できますか?
ありがとう!!
ruby-on-rails - has_many の RESTful ルート: 関係を通じて?
UserActivity モデルを使用して、 has_many :through によって関連付けられている User と Activity の 2 つのモデルがあります。ユーザーはアクティビティを「希望」または「完了」できます。これにより、UserActivity レコードが作成され、適切なブール値が設定されます。
ルートとコントローラー アクションを作成するときに、これらのアクションを処理するために何をお勧めしますか? activity/:id/want や activity/:id/done のようなものが最も理にかなっており、アクティビティ リソースの下に 2 つのメンバー ルートがあるでしょうか? それとも、user_activity コントローラで更新/作成アクションを使用し、作成のために /user_activity に投稿し、更新のために /user_activity/:id に置く方が理にかなっていますか?