1

私は3つのモデルを持っています、Programs Subprograms1 Subprograms2

プログラム -> has_many :subprograms1 , :subprograms2

Subprograms1 -> has_and_belongs_to_many :プログラム

Subprograms2 -> has_and_belongs_to_many :プログラム

特定のプログラムに属するすべての Subprograms1 と Subprograms2 を取得したいと考えています。

レールで可能ですか?

前もって感謝します......

4

2 に答える 2

0

私の理解が正しければ、Programs モデルのプロパティにアクセスするだけで、すべての Subprograms1 と Subprograms2 にアクセスできるはずです。

p = Programs.find(10)
sp1 = p.Subprograms1 
sp2 = p.Subprograms2
于 2012-12-01T17:27:55.977 に答える
0

データの構造がフラットな場合 (他のサブプログラムの下にサブプログラムがない場合)、Active Record のポリモーフィック アソシエーション を使用して、他の複数のテーブル (1 つだけでなく) への参照を使用できるため、Programs から Subprograms1およびSubprograms2への参照を設定できます。 1 回の呼び出しでそれらすべてを取得します。

データの構造が深い場合 (サブプログラムは他のサブプログラムを持つことができます)、3 つのテーブルすべてを 1 つのテーブルに配置し、ネストされたセット モデルを使用してデータ ツリーを管理し、プログラムに関連付けられたすべての (深い) サブプログラムを取得する必要があります。 . これを実現するのに役立つ多くの Ruby Gemがあります。

于 2012-12-01T17:42:42.953 に答える