首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Fixnum: Rails回滚错误

获取Fixnum: Rails回滚错误
EN

Stack Overflow用户
提问于 2015-09-09 10:34:31
回答 1查看 50关注 0票数 0

你好,我正在rails上的ruby上进行迁移:

代码语言:javascript
复制
 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

当我在控制台中输入回滚组件时,我会收到以下错误:

代码语言:javascript
复制
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!

为什么它说我要分配一个固定地点?谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 10:43:13

您的product: line_item.product_id应该是产品:line_item.product

代码语言:javascript
复制
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

或者你也可以这样做:

代码语言:javascript
复制
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
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32477220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档