0

这些是我的模型

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将产品与订单相关联,但我不知道如何在连接表中设置数量。

4

4 回答 4

1

您可以建立@line_item而不是@product然后将其附加到@order的行项目。

@line_item.quantity = 100
@line_item.product = Product.find(10)
@order.line_items << @line_item
于 2013-07-12T17:40:12.423 回答
0

您想手工完成还是通过表格完成?

如果手动您只需要在 LineItem 的关系中找到产品并更新它:

x = @order.line_items.last
x.quantity = 2

编辑:Baconator507 的回答是最快的

于 2013-07-12T17:38:10.280 回答
0

您需要直接创建行项目并指定其数量和产品。

尝试这样的事情

@product = Product.find(1)
@order.line_items.create(product_id: @product.id, quantity: 100)
于 2013-07-12T17:38:51.890 回答
0

无需加入表的额外属性,它已经存在。

Order#line_items # will return all information's you need

但是,如果您想按特定订单数量退回产品,请尝试以下代码。

首先,添加quantityattr_accessor :quantityProduct.rb

has_many :products, :through => :line_items然后,在Order.rbcreateproducts方法中删除以下行

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 
于 2013-07-12T18:16:17.990 回答