Ruby on Rails:如何创建具有重复主键的“has_one”关系?

问题描述 投票:0回答:1

我有2张桌子:

Dogs
- id (primary key)

Cats
- id (primary key)

我想介绍第三个表,比如说

Collars
,狗和猫都有:

Collars:
- id (primary key)
- size

通常,如果只是 Dog -> Collar 模型关联,我可以建立

has_one
关系,并且默认主键
id
关系将得到解析。

class Dog < ActiveRecord:Base
  has_one :collar
end

dog.collar.size = "XL"

但是,由于我有 2 个模型(狗和猫),我不确定如何解决此关联,因为 Dog 和 Cat 表可能具有重复的

id
值。因此
has_one
与主键的关系崩溃了。

class Dog < ActiveRecord:Base
  has_one :collar
end

class Cat < ActiveRecord:Base
  has_one :collar
end

# Dog Record - id: 1
# Cat Record - id: 1
# 2 separate tables allow for duplicate primary keys, so it would be impossible to resolve

dog.collar.size = "XL"
cat.collar.size = "S"

有没有办法让这种关系与活跃记录协会合作?

ruby-on-rails database activerecord model-associations
1个回答
0
投票

只是一个建议: 直接向狗和猫的桌子添加尺寸,因为它比整个新桌子占用的空间更少,而且更简单

这里

belongs_to
可以帮助你

© www.soinside.com 2019 - 2024. All rights reserved.