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

时间:2013-06-11 20:04:41

标签: ruby-on-rails activerecord ruby-on-rails-3.2

很抱歉,如果它是一个菜鸟问题,但我在之前的帖子中找不到。

我可以使用有效记录实现此功能吗?

我有3个表BranchPersonAddress以下关系:

Branch.Address (one-one)
Person.Address (one-one)

我从文档中知道这可以实现为多态关联,它在addressable_id表中维护FK(ADDRESS)以及类型信息(addressable_type=/Branch/|Person/)。

我想要做的是在address_idBranch表中使用Person并将Address保留为独立表,而不依赖于外部表。我还想保留从address / Branch个对象控制Person对象生命周期(级联保存/更新/删除)的能力。

1 个答案:

答案 0 :(得分:0)

听起来你只需要指定分支和人belongs_to地址

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

这将为分支和人员提供方法#address,并允许您以这种方式与其进行交互。