我有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"
有没有办法让这种关系与活跃记录协会合作?
只是一个建议: 直接向狗和猫的桌子添加尺寸,因为它比整个新桌子占用的空间更少,而且更简单
这里
belongs_to
可以帮助你