Ruby on rails 轨道;多态性中的1:1关系
我很少看到多态设计在数据库模式中有一个关系 我只想在Ruby on rails 轨道;多态性中的1:1关系,ruby-on-rails,database-design,Ruby On Rails,Database Design,我很少看到多态设计在数据库模式中有一个关系 我只想在发票项目与其他项目之间实现1:1关系(下标项目或使用项目) 我知道多态关系不是好的设计 如果没有多态性,我如何实现1:1关系 我应该将FK也设置为PK(保证唯一性)还是对其设置唯一约束? SubscriptionItems -------- - id - title - period_start - period_end UsageItems -------- - id - title - description InvoiceItems
发票项目
与其他项目之间实现1:1
关系(下标项目
或使用项目
)
我知道多态关系不是好的设计
如果没有多态性,我如何实现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)
下标
#model subscription_item.rb
---
has_one :invoice_item
---
UsageItem
#model usage_item.rb
---
has_one :invoice_item
---
发票项目
#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'
---
我想确认发票项目属于使用项目或订阅项目。