は、私は、便宜上Rails - HABTMとhas_manyの併用による効果?
Shop habtm Products
Product habtm Shops
Shop belongs_to Merchant
を関連性を持って、私も自分の製品のコントローラで
Merchant has_many :products, :through=>:shops
、I <%=debug @products %>
、コレクションが複数含まれて
@products = current_user.merchant.products
を宣言しました同じオブジェクトのコピー。
これは正常なのですか、またはHABTMとhas_manyを一緒に宣言して自分自身を嫌っていますか?
これが正常な場合は、重複したエントリを表示せずに製品を呼び出す方法がありますか?
ありがとうございます。
更新
私はhabtm
がShops
とProducts
の間にあるので、これは大丈夫でなければなりません実現。 Merchant has_many Products
。製品モデル内に外部キーを設定せずにproduct.merchant
のようなものを呼び出すことは可能ですか?
感謝を!終了して申し訳ありませんが、 'product.merchant'の逆を呼び出すことは可能ですか?本質的に、それは現実の世界のようです。商人には多くの商店と数多くの商品がありますが、1つの商品モデルは1つの商人にしか属していません。 –
'Product has_many:merchants、:through =>:shops'を定義することができます。次に、同じ商人を含むべきである 'product.merchants'の上の商人のリストで終わるでしょう(多分複数回)。しかし、これは、すべての販売者が自社製品のみを販売していることを保証する場合にのみ有効です。少し冗長であっても、もう一つの関係「Product belongs_to:merchant」を追加することをお勧めします。それで 'product.merchant'を呼び出すことができます。 – iltempo
最後のケースでは、私はProductモデル内にforeign_keyを設定する必要がありますか?私はそれも冗長であると感じます。商品=>販売者関係は既に定義されているはずです(ただし厳密にはそうではありません)。 –