Ruby 创建订单后需要将Order.id复制到多个行\u items.Order\u id

Ruby 创建订单后需要将Order.id复制到多个行\u items.Order\u id,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,所以,这就是它的工作原理 客户端打开浏览器,在seesion和DB中创建购物车,然后开始浏览产品。(创建购物车) 他将产品添加到购物车(创建行项目) 他按下结帐按钮,订单被创建(创建订单) 如果订单创建成功(通过paypal网关检查),则浏览器会将用户重定向到产品页面,购物车将被销毁。(代码会说得更好) 订单\u控制器 def create @order = current_cart.build_order(params[:order]) @order.ip_address =

所以,这就是它的工作原理

  • 客户端打开浏览器,在seesion和DB中创建购物车,然后开始浏览产品。(创建购物车)

  • 他将产品添加到购物车(创建行项目)

  • 他按下结帐按钮,订单被创建(创建订单)
  • 如果订单创建成功(通过paypal网关检查),则浏览器会将用户重定向到产品页面,购物车将被销毁。(代码会说得更好)

    订单\u控制器

    def create
        @order = current_cart.build_order(params[:order])
        @order.ip_address = request.remote_ip
        if @order.save
          if @order.purchase
            Cart.destroy(session[:cart_id])
            session[:cart_id] = nil
          else
            render :action => "failure"
          end
            respond_to do |format|
              format.html { redirect_to products_path, :notice => 
              'Thank you for your order.' }
              format.json { render :json => @order }
            end
        else
          render :action => 'new'
        end
      end
    
    line_项目保留在数据库中,因为我想在管理面板中显示订单以及此订单的line_项目,如果我可以将Order.id保存到line_items.Order_id中,我会这样做

    现在,当我填写新订单的表单并按下“发送”按钮时,所有line\u items.order\u id字段的值都为空,但我需要在其中包含order.id

    这是订单表格屏幕截图

    以及行项目

    正如您现在所看到的,第_行项目中的order_id等于order(40)中的id,但这是因为出于测试目的,我手动将order_id插入了第_行项目。通常我得到的是NULL值,而不是order\u id

    我只是不知道如何在订单保存后将此order.id插入到第_行项目中

    我可以在这里解释我的想法,但在我看来,我不知道如何在rails中编写代码:

    因此,创建订单后,应用程序必须查找与保存的订单具有相同购物车id的商品(因为两者在表中都有购物车id字段),以及所有与订单具有相同购物车id的商品,更改订单id=order.id。这就是我的看法。如果有别的办法,请告诉我。多谢各位


    p、 如果有任何代码错误,我会根据需要进行更新。

    它看起来像是当前的购物车。创建订单时,生成订单不会将购物车的行项目分配给订单。您可能只需在带有
    .build\u order
    的行之后添加
    @order.line\u items=current\u cart.line\u items
    。然后,保存订单时,行项目将与其关联。

    Yes man!!!许多吻!!:)别误会我。。我很高兴我成功了。非常感谢。