私はChoosing Between has_many :through
andhas_and_belongs_to_many
on the Rails Webサイトを読みましたが、Webサイトに記載されているケースとは異なるケースがあるため、少し混乱しています。
Prop
との2 つのモデルがあります。CharacterCostume
キャラクターのコスチュームには複数の小道具を関連付けることができますが、小道具はそのキャラクターに属しておらず、シーン内の任意の数のキャラクターが使用することもできます。
今、私はhas_and_belongs_to_many :props
自分のCharacterCostume
モデルの中にあり、それは私がやりたいことを正確に行います.character_costumes_props
呼び出し時に名前が付けられたテーブルを使用して、衣装に関連付けられたすべての小道具を取得します.CharacterCostume#props
しかし、協会名は「多くのものに属している」という部分のために私を先延ばしにしています。コスチュームはどの小道具にも属さないので、モデルのhas_and_belongs_to_many :character_costumes
内部はありません.Prop
それがなくてもすべて正常に機能することはわかっていますが、has_many :through
関連付けを使用する必要があるのではないかと考えましたが、それには余分なモデルを作成する必要があります(それは余分ですよね?) モデルは次のようになります。
class CharacterCostumeProp < ActiveRecord::Base
belongs_to :character_costume
has_one :prop
end
また、has_one
代わりにbelongs_to
ここで働きませんか?
コードを可能な限りセマンティックにしたいのですが、中間モデルがあるため、これによりリソースの要件が増加するか、何らかの形でパフォーマンスが低下するかはわかりません。
どちらのアプローチにも特定の癖/利点がありますか? 私のは十分ですか?それとも、私の考えは、私がしなければならないことから完全に間違っていますか?
ありがとう!