2010-07-30 52 views
1

我有以下創建行動:如何在Rails中將一個模型的內容分配給另一個模型?

def create 
    @order = Order.new(params[:order]) 

    if params[:same_as_above] == "1" 
     @order.billing_address.name = @order.shipping_address.name 
     @order.billing_address.number = @order.shipping_address.number 
     @order.billing_address.street = @order.shipping_address.town 
    end 

    if @order.save 
     if @order.purchase 
     render :action => "success" 
     else 
     render :action => "failure" 
     end 
    else 
     render :action => 'new' 
    end 
    end 

它的工作原理,但似乎我的屬性複製送貨地址的帳單地址,屬性的方式有點麻煩而脆。請問有更好的方法嗎?

回答

3
@order.billing_address.attributes = @order.shipping_address.attributes 

的伎倆。

0

如果你的模型是正確的設置,您可以使用:

@order.billing_address = @order.shipping_address 
+0

的ActiveRecord :: AssociationTypeMismatch在OrdersController#創建 BillingAddress(#18825000)預期,得到了ShippingAddress(#18874550) – pingu 2010-07-30 19:35:05

+0

這基本上就是我的意思是由不正確設置模型....爲什麼有兩套類和「地址」表 - 爲什麼'ShippingAddress'和'BillingAddress'? – yfeldblum 2010-07-30 20:11:35

+0

由於一個表格的數據將被保留,而另一個將被定期清除。這就是爲什麼我有分離。 – pingu 2010-07-31 08:20:51

相關問題