2013-11-23 71 views
0

我有以下兩個簡單的類:試圖在軌兩個人之間的關係模型

class Person < ActiveRecord::Base 
    has_many :parent_child_assignments 

    has_many :children, :through => :parent_child_assignments 
    has_many :parents, :through => :parent_child_assignments 
end 

class ParentChildAssignment < ActiveRecord::Base 
    belongs_to :parent, :class_name => "Person" 
    belongs_to :child, :class_name => "Person" 
end 

從下面的軌道創建命令

rails generate model Person name:string 
rails generate model ParentChildAssignment parent_id:integer child_id:integer 

我可以得到一個方向(joe.children或joe.parents)工作,但不能同時工作

有人必須問過這個問題,但我找不到它。

在此先感謝。

+0

我認爲你需要指定的外鍵中有很多部分。例如:'has_many:children,:through =>:parent_child_assignments,class_name:'Person',foreign_key :: child_id – Max

回答

0

的類應該是這樣的:

class Person < ActiveRecord::Base 
    has_many :parent_child_assignments_as_parent, class_name: 'ParentChildAssignment', :foreign_key => :parent_id 
    has_many :parent_child_assignments_as_child, class_name: 'ParentChildAssignment', :foreign_key => :child_id 

    has_many :children, :through => :parent_child_assignments_as_parent 
    has_many :parents, :through => :parent_child_assignments_as_child 
end 

class ParentChildAssignment < ActiveRecord::Base 
    belongs_to :parent, :class_name => "Person", :foreign_key => :parent_id 
    belongs_to :child, :class_name => "Person", :foreign_key => :child_id 
end 
+0

答案實際上是由朋友給我離線給我的。 –

相關問題