这些是我的模特
class Product
has_many :line_items
has_many :orders, :through => :line_items
end
class LineItem
belongs_to :order
belongs_to :product
validates :quantity, presence: true
end
class Order
has_many :line_items
has_many :products, :through => :line_items
end
我可以@order.products << @product
将产品与订单相关联,但我无法弄清楚如何在连接表中设置数量。
答案 0 :(得分:1)
您可以构建@line_item
而不是@product
,然后将其附加到@order
的订单项。
@line_item.quantity = 100
@line_item.product = Product.find(10)
@order.line_items << @line_item
答案 1 :(得分:0)
您想通过手工或表格来实现吗?
如果您需要手动找到LineItem关系中的产品并更新它:
x = @order.line_items.last
x.quantity = 2
编辑: Baconator507的答案是最快的
答案 2 :(得分:0)
您需要直接创建订单项并指定其数量和产品。
尝试这样的事情
@product = Product.find(1)
@order.line_items.create(product_id: @product.id, quantity: 100)
答案 3 :(得分:0)
无需加入表的额外属性,它已经存在。
Order#line_items # will return all information's you need
但是,如果您想按特定顺序退回产品数量,请尝试以下代码。
首先,将quantity
添加为attr_accessor :quantity
到Product.rb
然后,删除has_many :products, :through => :line_items
创建Order.rb
方法中的以下行products
def products
products_list = []
line_items.each do |item|
item.product.quantity = item.quantity
products_list << item.product
end
products_list
end
order = Order.last
order.products # will return list of products with quantity attribute