ActiveRecord has_many:通过多个来源进行关联

时间:2012-06-27 14:33:39

标签: ruby-on-rails ruby activerecord associations has-many-through

我有一个自引用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]

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

1 个答案:

答案 0 :(得分:0)

我认为has_many关联总是与某个地方有一个id来表示关系,并允许你修改它。例如。您可以向has_many数组添加新元素,并将结果保留回数据库。如果您可以将两个源合并在一起,则无法通过此链接行。

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

has_many :a
has_many :b

def sum
  a + b
end