2010-07-30 51 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

相关问题