提问人:Wallace 提问时间:11/9/2023 更新时间:11/17/2023 访问量:44
Ruby on Rails:如何通过复制主键创建“has_one”关系?
Ruby on Rails: How do you create a `has_one` relationship with duplicating primary keys?
问:
我有 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 个模型(狗和猫),我不确定这种关联如何解决,因为狗和猫表可能具有重复值。因此,与主键的关系分崩离析。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"
有没有办法使这种关系与活动记录关联一起工作?
答:
0赞
Mittu Rajareddy
11/17/2023
#1
只是一个建议: 直接向狗和猫表添加大小,因为它比全新的桌子占用的空间更少,而且不那么复杂
这里可以帮到你belongs_to
评论
collarable_id: 1, collarable_type: 'Dog'
collarable_id: 1, collarable_type: 'Cat'
collar_id