我很少在db schema中看到has_one
关系中的多态设计。
我很乐意在1:1
与他人(invoice_item
或subscripiton_item
)之间实现usage_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 :(得分: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'
---