我是这样一个联合体,Rails - 通过一起使用HABTM和has_many的不良影响?
Shop habtm Products
Product habtm Shops
Shop belongs_to Merchant
为了方便,我也宣布
Merchant has_many :products, :through=>:shops
在我的产品控制器,
@products = current_user.merchant.products
当我<%=debug @products %>
,收集包括多个同一个对象的副本。
这是正常的还是我通过宣布HABTM和has_many通过在一起?
如果这是正常的,有没有方法可以调用没有重复条目的产品?
谢谢。
更新
我意识到这一点应该没问题,因为habtm
是Shops
和Products
之间。 Merchant has_many Products
。是否有可能在产品模型中没有设置外键的情况下打电话给product.merchant
?
感谢您的快速反应!对不起,完成了,是否可以调用反向'product.merchant'?本质上,它就像现实世界。商家有很多商店和很多产品,但是1个产品型号只属于一个商家。 – 2012-03-02 08:22:51
你可以定义'产品has_many:商家,:通过=>:商店'。然后,您将最终得到一个商品列表,其中应包含同一商家(可能是多次)的'product.merchants'。但是,这只有在确保所有商家仅销售他们自己的产品时才有效。我建议添加另一个关系'产品belongs_to:商家',即使它有点多余。然后你可以调用'product.merchant'。 – iltempo 2012-03-02 08:47:42
但在最后一种情况下,我必须在产品模型中设置foreign_key?我觉得这也是多余的。产品=>商家关系应该已经定义(尽管不是严格的)。 – 2012-03-02 08:50:50