2013-06-11 114 views
0

對不起,如果它是一個noob問題,但我在以前的帖子中找不到。非活動記錄非多態/非STI一對一關係

我可以用活動記錄來實現嗎?

我有3個表BranchPersonAddress有以下關係式:

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

我從文檔知道,這可爲多態協會,維護FK(addressable_id)在ADDRESS表一起實現鍵入信息(addressable_type=/Branch/|Person/)。

我想要做的是有兩個BranchPerson表中的address_id,並保持Address作爲一個獨立的表,而在外部表上的任何依賴。我還想保留從Branch/Person對象中控制address對象(級聯保存/更新/刪除)的生命週期的能力。

回答

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,並允許您與它進行交互的方式。

+0

Josh,感謝您的快速響應。如果我這樣做,我不在Address中提供has_one關係嗎? – r3doc

+0

哎呀,我錯過了。放置has_one是可選的,只有當你需要調用地址#人或地址#分支時才需要。我已經添加了這些。 –

+0

這樣做。感謝Josh的幫助。 – r3doc