has_and_belongs_to_many不允许重复

时间:2011-08-22 21:26:58

标签: 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

它们由参考表orders_products

连接

我希望订单能够包含更多相同产品的1个实例,所以当我@order.product_ids = [2,2,2]时,这意味着添加3次ID为2的产品

导致@order.product_ids = [2],无论如何告诉Model我确实需要重复吗?

1 个答案:

答案 0 :(得分:2)

我不建议(既不考虑任何用途)你试图在这里实现关联的方式。虽然两个模型之间存在很多关系,但您要做的是从第1点到第2点绘制3条线。如果您尝试使用@order.product_ids = [2,3,4],它应该可以正常工作并且有意义。 在您的情况下,您希望订单中有多个产品,您应该在关系表orders_products上添加一些额外的列,表示每ProductOrder的数量。在这种情况下,建议使用has_many而不是habtm关联,因为您可以更好地控制关系表。阅读http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many