Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-HABTM的不良影响,是否有多个through一起使用?_Ruby On Rails_Associations - Fatal编程技术网

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