2012-02-27 59 views
2

newb here。我正在嘗試在創建和保存訂單和關係時執行交易。幾乎就像你必須付錢才能跟隨某人。訂單保存後,關係被創建並保存。Rails交易

def create 
@order = current_cart.build_order(params[:order]) 
@order.ip_address = request.remote_ip 
if @order.save 
    if @order.purchase 

    respond_to do |format| 
    Order.transaction do 
     begin 
      @order.cart.line_items.all.each do |item| 
      current_user.person_relationships.build(:owned_id => item.person_id) 
      end 
     end 
     format.html {redirect_to root_path, :flash => {:success => "Transaction Success" } } 
     format.xml{render xml: root_path} 

     rescue ActiveRecord::RecordInvalid 
     format.html {render :action => "failure" } 
     format.xml {render :action => "failure"} 

     raise ActiveRecord::Rollback 
     end 
    end 
    end 
end 

訂單創建時出現問題。就好像該方法跳過項目塊並創建了訂單,但沒有創建人員關係。回答可能的鏈接也非常感謝。

在此先感謝。

+0

這將是有益的,看看模特太 – ScottJShea 2012-02-27 05:51:08

回答

2

在我看來,你只是建立關係,而不是爲他們節省:

current_user.person_relationships.build(:owned_id => item.person_id) 

大概應該是

current_user.person_relationships.create(:owned_id => item.person_id) 
+0

它的工作。非常感謝!附註:構建和創建有什麼區別? – Jches 2012-02-27 07:32:01

+1

'build'只是在內存中創建一個新對象,而'create'首先調用'build',然後立即調用'save',將對象存儲在數據庫中 – Wolfgang 2012-02-27 08:29:00

0

如果它正在跳過項目,那麼您可能沒有該購物車的line_items?檢查軌道正在進行的查詢以及返回的數據的日誌。