在Rails 4

时间:2015-07-10 08:39:13

标签: ruby-on-rails ruby-on-rails-4

我试图模仿父母和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

我如何延长这个以便孩子可以有父母和父母?

2 个答案:

答案 0 :(得分:0)

我认为你应该在这里使用has_and_belongs_to_many协会!请阅读文档Rails guides

答案 1 :(得分:0)

为了回答我自己的问题,我设法让它发挥作用。它依赖于更改我的Child模型,因此它具有mother_id:integerfather_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