Ruby on rails 与activerecord的非多态/非STI一对一关系
很抱歉,如果这是一个noob问题,但我无法在以前的帖子中找到这一点 我可以用活动记录实现这一点吗 我有3个表Ruby on rails 与activerecord的非多态/非STI一对一关系,ruby-on-rails,activerecord,ruby-on-rails-3.2,Ruby On Rails,Activerecord,Ruby On Rails 3.2,很抱歉,如果这是一个noob问题,但我无法在以前的帖子中找到这一点 我可以用活动记录实现这一点吗 我有3个表分支机构,人员,和地址,它们之间有以下关系: Branch.Address (one-one) Person.Address (one-one) 我从文档中知道,这可以实现为多态关联,它在ADDRESS表中维护FK(可寻址\u id)以及类型信息(可寻址\u type=/Branch/|Person/) 我想做的是在分支机构和个人表中都有地址,并将地址作为一个独立的表保留,而不依赖于外部
分支机构
,人员
,和地址
,它们之间有以下关系:
Branch.Address (one-one)
Person.Address (one-one)
我从文档中知道,这可以实现为多态关联,它在ADDRESS
表中维护FK(可寻址\u id
)以及类型信息(可寻址\u type=/Branch/|Person/
)
我想做的是在
分支机构
和个人
表中都有地址
,并将地址
作为一个独立的表保留,而不依赖于外部表。我还想保留从分支机构
/人员
对象控制地址
对象(级联保存/更新/删除)生命周期的功能。听起来您只需要指定分支机构和人员所属的地址
class Branch < ActiveRecord::Base
belongs_to :address
end
class Person < ActiveRecord::Base
belongs_to :address
end
class Address < ActiveRecord::Base
has_one :branch
has_one :person
end
class分支
这将为您提供分支机构和个人的方法#地址
,并允许您以这种方式与之交互。Josh,感谢您的快速响应。如果我这么做了,难道我不给你一个地址吗?哎呀,我错过了。放置has#u one是可选的,仅当您需要呼叫address#person或address#分支时才需要。我现在已经添加了这些。这样就可以了。谢谢你的帮助,乔希。