これはおそらく初心者の質問ですが、最善の解決策を見つけることはできません。ColorモデルとモデルがありCoverます。ほとんどの場合、カバーhas_one :color。たぶん100ケースに1つ、カバーhas_many :colors。has_many :through2つのモデル間の関連付けを実装する必要がありますか?冗長なようです。そのような関係を定義するためのベストプラクティスは何ですか?
2 に答える
1
の場合、一般的なケースをカバーする必要があると思いますCover has_many :colors。つまり、これは多対多の関係です。この場合、2つのオプションがあります。
結合テーブルに格納する必要がある場合は
cover_id、color_id結合テーブルを使用して、関連付けを定義するために使用しhas_and_belongs_to_manyます。このオプションでは、結合テーブルを作成する必要があります。とだけでなく他の属性も格納する必要があり、何らかの計算を行う必要がある場合は、結合モデルを使用します。そのため、を使用して関連付けを定義する必要があります。このオプションでは、新しいモデルを作成する必要があります。
cover_idcolor_idhas_many :through
于 2012-12-10T21:08:41.103 に答える
0
カバーhas_many :colorsを必要とするケースが1つしかない場合でも、カバーが最善の方法です。
于 2012-12-10T20:21:39.793 に答える