0

これはおそらく初心者の質問ですが、最善の解決策を見つけることはできません。ColorモデルとモデルがありCoverます。ほとんどの場合、カバーhas_one :color。たぶん100ケースに1つ、カバーhas_many :colorshas_many :through2つのモデル間の関連付けを実装する必要がありますか?冗長なようです。そのような関係を定義するためのベストプラクティスは何ですか?

4

2 に答える 2

1

の場合、一般的なケースをカバーする必要があると思いますCover has_many :colors。つまり、これは多対多の関係です。この場合、2つのオプションがあります。

  1. 結合テーブルに格納する必要がある場合はcover_idcolor_id結合テーブルを使用して、関連付けを定義するために使用しhas_and_belongs_to_manyます。このオプションでは、結合テーブルを作成する必要があります。

  2. とだけでなく他の属性も格納する必要があり、何らかの計算を行う必要がある場合は、結合モデルを使用します。そのため、を使用して関連付けを定義する必要があります。このオプションでは、新しいモデルを作成する必要があります。 cover_idcolor_idhas_many :through

于 2012-12-10T21:08:41.103 に答える
0

カバーhas_many :colorsを必要とするケースが1つしかない場合でも、カバーが最善の方法です。

于 2012-12-10T20:21:39.793 に答える