如何让所有孩子都获得父母身份?

时间:2018-02-19 02:31:32

标签: ruby-on-rails

我有一个名为" Person"有母亲"和父亲"字段(指向同一个类的一对一关系),所以现在我想得到一个人的所有孩子 我怎么能这样做?

这是模型

class Person < ApplicationRecord
  has_many :mails, dependent: :destroy
  has_many :phones, dependent: :destroy

  has_one :spouse, class_name: 'Person'
  has_one :father, class_name: 'Person'
  has_one :mother, class_name: 'Person'
end

这是迁移

class CreatePeople < ActiveRecord::Migration[5.1]
  def change
    create_table :people do |t|
      t.string :rut, unique: true
      t.string :dv
      t.string :names
      t.string :paternal_surname
      t.string :maternal_surname
      t.date :birth_date
      t.date :death_date
      t.string :civil_status
      t.string :sex
      t.string :nationality

      t.references :father
      t.references :mother
      t.references :spouse

      t.timestamps
    end
  end
end

我想通过以下方式访问孩子:

Person.children

但我在RoR上真的很新,我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

您需要指定一个人有很多孩子。类似于你如何说人有很多邮件和电话。

从那里,调整你的代码,说一个人属于父亲而不是一个。

class Person < ApplicationRecord
  has_many :mails, dependent: :destroy
  has_many :phones, dependent: :destroy
  has_many :children, class_name: 'Person'

  has_one :spouse, class_name: 'Person'
  belongs_to :father, class_name: 'Person'
  belongs_to :mother, class_name: 'Person'
end