Ruby on rails Rails-HABTM的不良影响,是否有多个through一起使用?
我有一个协会Ruby on rails Rails-HABTM的不良影响,是否有多个through一起使用?,ruby-on-rails,associations,Ruby On Rails,Associations,我有一个协会 Shop habtm Products Product habtm Shops Shop belongs_to Merchant 为了方便起见,我还宣布了 Merchant has_many :products, :through=>:shops 在我的产品控制器中 @products=当前用户.商户.产品 当I时,集合包含同一对象的多个副本 这是正常的吗?还是我通过宣布HABTM来欺骗自己,让很多人一起度过了难关 如果这是正常情况,是否有方法调用产品而不出现重复条目
Shop habtm Products
Product habtm Shops
Shop belongs_to Merchant
为了方便起见,我还宣布了
Merchant has_many :products, :through=>:shops
在我的产品控制器中
@products=当前用户.商户.产品
当I
时,集合包含同一对象的多个副本
这是正常的吗?还是我通过宣布HABTM来欺骗自己,让很多人一起度过了难关
如果这是正常情况,是否有方法调用产品而不出现重复条目
多谢各位
更新
我意识到这应该没问题,因为
habtm
介于商店
和产品
之间。商家有很多产品
。是否可以在不在产品型号内设置外键的情况下调用产品。商户
之类的东西?如果您的商户有一些提供相同产品的商店,这是正常行为 您可以使用不同的:
@products = current_user.merchant.products.distinct(:product_id)
谢谢你的快速回复!抱歉,结束了,可以呼叫反向产品。商户
?本质上,它就像真实的世界。商户有多个店铺和多个产品,但一个产品模型只属于一个商户。您可以定义产品有多个:商户,:至=>:店铺
。然后,您将在product.merchants
上看到一个商户列表,其中应该包含同一个商户(可能多次)。但这只有在确保所有商家只销售自己的产品时才有效。我建议添加另一个关系产品所属:merchant
,即使它有点多余。然后您可以调用product.merchant
。但是在最后一种情况下,我必须在产品模型中设置外键?我觉得这也是多余的。product=>merchant关系应该已经定义(虽然不是严格定义的)。在SQL上要做的事情是不同的uniq
用ruby实现。您可以使用distinct更改SQL。不适用于uniq