2009-04-07 87 views
3

在我的網上商店,每個訂單都與送貨地址和賬單地址相關(當然,它們可以是相同的)。這是我第一次來模擬這種嘗試:如何在軌中訂購送貨地址和賬單地址

Class Order 
    belongs_to :billing_address, :class => "Address" 
    belongs_to :shipping_address, :class => "Address" 

這工作得很好,但現在的形式傭工不工作。即,form_for只會生成名稱爲address[zipcode]的字段,因此我必須手動將其破解以獲得billing_address[zipcode]shipping_address[zipcode]

我想我可以使用單表繼承的子類AddressShippingAddressBillingAddress,但是這似乎有點哈克給我(和Best way to model Customer <--> Address違背一些很好的答案)。

回答

2

我有兩個想法,你,要麼或兩者可以做的伎倆:

Class Order 
    belongs_to :billing_address, :class_name => "Address" 
    belongs_to :shipping_address, :class_name => "Address" 

Class Order 
    belongs_to :address, :foreign_key => "billing_address_id" 
    belongs_to :address, :foreign_key => "shipping_address_id" 

請讓他們與你的形式助手一個嘗試,我很想知道,如果它出來您。希望能幫助到你!

3

您需要指定類名稱,因爲它不是BillingAddress或ShippingAddress。

class Order < ActiveRecord::Base 
    # foreign key not required here because it will look for 
    # association_name_id, e.g. billing_address_id, shipping_address_id 
    belongs_to :billing_address, :class_name => "Address" 
    belongs_to :shipping_address, :class_name => "Address" 
end 

要完成關聯:

class Address < ActiveRecord::Base 
    # foreign key required here because it will look for class_name_id, 
    # e.g. address_id 
    has_many :billing_orders, :class_name => "Order", 
    :foreign_key => "billing_address_id" 
    has_many :shipping_orders, :class_name => "Order", 
    :foreign_key => "shipping_address_id" 
end 
+2

這豈不是更有意義的地址屬於一個訂單? – Mohamad 2013-07-24 16:55:32

相關問題