Ruby on rails 与activerecord的非多态/非STI一对一关系

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/) 我想做的是在分支机构和个人表中都有地址,并将地址作为一个独立的表保留,而不依赖于外部

很抱歉,如果这是一个noob问题,但我无法在以前的帖子中找到这一点

我可以用活动记录实现这一点吗

我有3个表
分支机构
人员
,和
地址
,它们之间有以下关系:

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#分支时才需要。我现在已经添加了这些。这样就可以了。谢谢你的帮助,乔希。