我有以下两种型号:
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
它们由参考表orders_products
我希望订单能够包含更多相同产品的1个实例,所以当我@order.product_ids = [2,2,2]
时,这意味着添加3次ID为2的产品
导致@order.product_ids = [2]
,无论如何告诉Model我确实需要重复吗?
答案 0 :(得分:2)
我不建议(既不考虑任何用途)你试图在这里实现关联的方式。虽然两个模型之间存在很多关系,但您要做的是从第1点到第2点绘制3条线。如果您尝试使用@order.product_ids = [2,3,4]
,它应该可以正常工作并且有意义。
在您的情况下,您希望订单中有多个产品,您应该在关系表orders_products
上添加一些额外的列,表示每Product
个Order
的数量。在这种情况下,建议使用has_many
而不是habtm
关联,因为您可以更好地控制关系表。阅读http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many