我试图模仿父母和Rails中的一些孩子4.我试图建模的关系是每个孩子将有两个父母,每个父母可以有很多孩子。我已经能够模仿单亲和许多孩子的关系,如下:
rails g model Parent name:string
rake db:migrate
rails g model Child name:string parent_id:integer
rake db:migrate
然后我可以像这样创建父母:
rails console
Parent.create(name: 'Joe Bloggs')
这给了我一个id为1的父母。我可以把它加入一个像这样的新孩子:
Child.create(name: 'Jane Bloggs', parent_id: 1)
然后我将关系添加到模型类child.rb
:
belongs_to :parent
所以我现在可以跑了:
Child.first.parent
我如何延长这个以便孩子可以有父母和父母?
答案 0 :(得分:0)
我认为你应该在这里使用has_and_belongs_to_many协会!请阅读文档Rails guides
答案 1 :(得分:0)
为了回答我自己的问题,我设法让它发挥作用。它依赖于更改我的Child模型,因此它具有mother_id:integer
和father_id:integer
。然后我将以下内容添加到child.rb
:
has_one :mother, :class_name => "Parent", :primary_key => "mother_id", :foreign_key => "id"
has_one :father, :class_name => "Parent", :primary_key => "father_id", :foreign_key => "id"
这使我能够将一个孩子与两个父母联系起来并支持以下内容:
Child.first.father
Child.first.mother