0

我有一個自我引用has_many :through模型has_and_belongs_to_many與另一個模型。基本上是這樣的:ActiveRecord has_many:通過關聯通過多個來源

class Foo << ActiveRecord::Base 
    has_and_belongs_to_many :bars 
    has_many :foo_links 
    has_many :foo_parents, :through => :foo_links, :foreign_key => :foo_parent_id, :class_name => "Foo" 
    has_many :foo_children, :through => :foo_links, :foreign_key => :foo_child_id, :class_name => "Foo" 
end 

我希望能夠有一個foo_child項目可以屬於任何bars其所分配,以及任何bars到其中一個其foo_ancestorsfoo_parents和他們的foo_parents等)被分配。基本上,我是希望能放在一起這樣的:

has_many :inherited_bars, :through => :foo_parents, :source => [:bars, :inherited_bars] 

我從來沒有見過這樣的例子,但我想知道是否有可能有一個協會,是協會的合併從通過關聯。

回答

0

我認爲has_many關聯始終綁定在某處以指示關係,並允許您修改此關係。例如。您可以將新元素添加到has_many數組,並將結果保留回數據庫。如果您可以將兩個源合併在一起,那麼您將失去按此鏈接行的功能。

一種可能的方法是這樣的,只讀的方式:

has_many :a 
has_many :b 

def sum 
    a + b 
end