如何建模自引用多对多关系?

时间:2014-02-20 19:47:27

标签: ruby-on-rails activerecord

我正在尝试设置一个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=>”,但不确定自引用部分如何影响事物..

非常感谢任何指导!

1 个答案:

答案 0 :(得分:0)

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

widget.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'