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