Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 _和_属于_许多不允许重复_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails _和_属于_许多不允许重复

Ruby on rails _和_属于_许多不允许重复,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有以下两种型号: class Order < ActiveRecord::Base has_and_belongs_to_many :products, :uniq => false end class Product < ActiveRecord::Base has_and_belongs_to_many :orders, :uniq => false end 类顺序false 结束 类产品false 结束 它们由一个参考表orders\u product

我有以下两种型号:

class Order < ActiveRecord::Base
  has_and_belongs_to_many :products, :uniq => false
end

class Product < ActiveRecord::Base
 has_and_belongs_to_many :orders, :uniq => false
end
类顺序false
结束
类产品false
结束
它们由一个参考表
orders\u products

我希望order能够包含多个相同产品的实例,因此当我
@order.product\u id=[2,2,2]
时,这意味着添加3倍于id为2的产品

这将导致
@order.product\u id=[2]
,是否有必要告诉Model我确实需要复制品?

我不推荐(也不考虑任何用途)您尝试在此处实现关联的方式。虽然这两个模型之间有很多关系,但您要做的是从点1到点2绘制3条线。如果您尝试使用
@order.product_ids=[2,3,4]
,那么它应该可以正常工作并有意义。
在您的情况下,如果您希望一个订单中有多个产品,那么在关系表
订单\u products
上应该有一个额外的列,它表示每个
订单的
产品
数量。在这种情况下,建议对
habtm
关联使用
has\u many
,因为您可以更好地控制关系表。阅读

只是为了重复和澄清上述内容,这里正确的选择是成熟的连接模型,而不是HABTM。通常在问题中的用例中,这通常称为“行项目”,它与订单和产品关联,并包括“计数”字段。右,或OrderItem,即订单有多个:订单项目,OrderItem有一个:产品和数量。