你好,我正在rails上的ruby上进行迁移:
class CombineItemsInCart < ActiveRecord::Migration
def up
Cart.all.each do |cart|
sums = cart.line_items.group(:product_id).sum(:quantity)
sums.each do |product_id, quantity|
cart.line_items.where(product_id: product_id).delete_all
item = cart.line_items.build(product_id: product_id)
item.quantity = quantity
item.save!
end
end
end
def down
LineItem.where("quantity>1").each do |line_item|
line_item.quantity.times do
LineItem.create cart_id: line_item.cart_id,
product: line_item.product_id, quantity: 1
end
line_item.destroy
end
end
end当我在控制台中输入回滚组件时,我会收到以下错误:
Product(#58221600) expected, got Fixnum(#17692120)/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/associations/association.rb:218:in `raise_on_type_mismatch!为什么它说我要分配一个固定地点?谢谢你的帮助
发布于 2015-09-09 10:43:13
您的product: line_item.product_id应该是产品:line_item.product
def down
LineItem.where("quantity>1").each do |line_item|
line_item.quantity.times do
LineItem.create cart_id: line_item.cart_id,
product: line_item.product, quantity: 1
end
line_item.destroy
end
end或者你也可以这样做:
def down
LineItem.where("quantity>1").each do |line_item|
line_item.quantity.times do
LineItem.create cart_id: line_item.cart_id,
product_id: line_item.product_id, quantity: 1
end
line_item.destroy
end
endhttps://stackoverflow.com/questions/32477220
复制相似问题