如何对自引用的多对多关系进行建模



我正在尝试设置一个 ActiveRecord 对象来模拟一种关系,其中表是自引用的、父子的,可能有多个父项和多个子项

表本身如下所示:

create_table :widget do |t|
  t.string :name                  ,:string     ,:null=>false      ,:limit=>100
  t.string :url                   ,:string     ,:null=>true       ,:limit=>100      
  t.timestamps
end

rel 表如下所示:

create_table "widget_rels" do |t|
  t.integer "parent_id"
  t.integer "child_id"
end

但我正在努力解决AR对象将为关系定义的内容。

看起来像"has_and_belongs_to_many"或"has_many,:through=>",但不确定自引用部分如何影响事物。

任何指导非常感谢!

不是 100% 确定它会起作用,但你可以试试这个:

小部件.rb

has_and_belong_to_many :parents, :class_name => "Widget", through: :widget_rels, :foreign_key => 'parent_id'
has_and_belong_to_many :children, :class_name => "Widget", through: :widget_rels, :foreign_key => 'child_id'

最新更新