Ruby on rails Spree::OrderPopulator.Populator在一项请求时订购两项

Ruby on rails Spree::OrderPopulator.Populator在一项请求时订购两项,ruby-on-rails,spree,Ruby On Rails,Spree,我有一个程序,我试图通过程序创建狂欢订单。我正在使用OrderPopulator类来完成此操作。我的代码是: populator = Spree::OrderPopulator.new current_order(create_order_if_necessary: true), current_currency products.each do |product| variant = Spree::Variant.find_by product_id: product.id, is_mas

我有一个程序,我试图通过程序创建狂欢订单。我正在使用OrderPopulator类来完成此操作。我的代码是:

populator = Spree::OrderPopulator.new current_order(create_order_if_necessary: true), current_currency
products.each do |product|
  variant = Spree::Variant.find_by product_id: product.id, is_master: true
  puts "Pre-Items: #{current_order.line_items.count}"
  populator.populate({ products: { product_id: product.id, variant_id: variant.id }, quantity: 1 })
  puts "Post-Items: #{current_order.line_items.count}"
  puts "Products: #{current_order.line_items.first.quantity}"
end
这张照片是:

Pre-Items: 0
Post-Items: 1
Products: 2

Products
应为1,因为这是我在添加项目时指定的数量。我做错了什么?

您有点混淆了产品和变体。在Spree 2.1中,我们有以下代码:

它允许您添加产品和/或变体。因为您在products哈希中指定了两个id,所以它会尝试添加第一个id(product.id)和第二个id(variant.id)

我认为您的数量是2,因为您的product.id==variant.id

我建议只按变量ID添加内容,因此请尝试:

populator.populate({ variants: { variant_id: variant.id }, quantity: 1 })

Spree 2.2.x已经消除了其中的一些复杂性,现在只采用了一个变体id:

与此类似的问题