0

我有一个自引用has_many :through模型,它有另一个 has_and_belongs_to_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]

我从来没有见过这样的例子,但我想知道是否有可能有一个关联是从一个直通关联合并的关联。

4

1 回答 1

0

我认为 has_many 关联总是与某处的 id 绑定以指示关系,并允许您修改它。例如。您可以向 has_many 数组添加一个新元素,并将结果持久化回数据库。如果您可以将两个源合并在一起,您将无法通过此链接行。

一种可能的方法是这种只读方式:

has_many :a
has_many :b

def sum
  a + b
end
于 2012-06-27T14:40:56.430 回答