2012-04-03 19 views
0

所以,這是這個東西是如何工作的..需要Order.id複製到倍數line_items.order_id後創造秩序

  1. 客戶端打開瀏覽器,車在SEESION和DB創建他開始瀏覽產品。如果成功創建訂單(創建車)

  2. 他補充產品,購物車(創建line_items)

  3. 他按結賬按鈕,訂單被創建(創建順序)

(檢查通過貝寶網關),然後瀏覽器將用戶重定向到產品頁面,並且購物車被銷燬。 (代碼將更好說了吧)

Orders_Controller

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_items停留在數據庫中,因爲我想顯示在管理面板訂單和該訂單的line_items,我會做,如果我可以將order.id保存到line_items.order_id中。

現在,當我填補了新訂單的形式和我按下發送鍵,我對所有line_items.order_id領域NULL值,但我需要有order.id它

這裏是爲了表屏幕截圖

enter image description here

line_items

enter image description here

正如您現在所看到的,line_items中的order_id等於來自order(40)的id,但它是如此,因爲我手動將order_id插入line_items用於測試目的。通常情況下,我得到了NULL值,而不是ORDER_ID

我只是不明白它是如何的訂單保存

後,這個order.id插入到line_items我可以在這裏解釋一下我的想法,但只是在單詞作爲我看到它,我不知道如何在rails中編碼:

因此,創建訂單後,應用程序必須查找與保存的訂單具有相同cart_id的line_items(因爲兩者都有cart_id字段在表中)以及所有與訂單具有相同cart_id的line_items,請更改order_id = order.id。這是我看到它的方式。如果有其他方法,請讓我知道。謝謝。

p.s.如果任何代碼missgin我會根據需要更新它。

回答

1

看起來current_cart.build_order在創建訂單時未將訂單的LineItem分配給訂單。您可能只需在.build_order之後添加@order.line_items = current_cart.line_items即可。然後,訂單被保存後,LineItems將與其關聯。

+0

是的男人!很多吻!! :))不要誤解我的意思。我只是很高興我做到了。謝謝。 – rmagnum2002 2012-04-03 18:12:18