2017-02-03 89 views
0

我很少看到has_one關係在DB模式中的多態設計。導軌;多態的1:1關係

我只是很想實現1:1invoice_item與其他人(subscripiton_itemusage_item)之間的關係。

我知道多態關係不是很好的設計。

我怎樣才能實現1:1關係沒有多態?

我應該讓FK還是PK(保證唯一性)還是在其上設置一個唯一約束?

SubscriptionItems 
-------- 
- id 
- title 
- period_start 
- period_end 

UsageItems 
-------- 
- id 
- title 
- description 


InvoiceItems 
-------- 
- id 
- itemable_id 
- itemable_type (either a subscription_item *or* a usage_item) 

回答

0

SubscriptionItem

#model subscription_item.rb 
    --- 
    has_one :invoice_item 
    --- 

UsageItem

#model usage_item.rb 
    --- 
    has_one :invoice_item 
    --- 

InvoiceItems

#model invoice_item.rb 
    --- 
    belongs_to :usage_item, :class_name => 'UsageItem', :foreign_key => 'usage_item_id' 
    belongs_to :subscription_item, :class_name => 'SubscriptionItem', :foreign_key => 'subscription_item_id' 
    --- 
+0

我很想確保invoice_item屬於任何usage_item或subscription_item。 – Tosh