Создайте ассоциации внуков в той же модели Rails - PullRequest
0 голосов
/ 19 июня 2019

Я хочу получить что-то подобное в одном классе, используя ActiveRecord:

grandfather = Person.create(name: "Grandfather")
son = Person.create(name: "Son", parent: grandfather)
grandson = Person.create(name: "Grandson", parent: son)

grandfather.children.map(&:name)
=> ["Son"]

grandfather.grandchildren.map(&:name)
=> ["Grandson"]

Я написал детское объединение так:

class Person < ActiveRecord::Base
  belongs_to :parent, class_name: "Person", foreign_key: "parent_id"
  has_many :children, class_name: "Person", foreign_key: "parent_id"
end

И это работает, но я застрял с внуками. Есть идеи?

1 Ответ

1 голос
/ 19 июня 2019

Вы можете начать с чего-то вроде этого:

Модели

Person
Child
Grandchild

A Person has_many :children
A Child belongs_to :person
A Child has_many :grandchildren
A Grandchild belongs_to :child

До сих пор мы не установили отношения между Person и Grandchild, поэтому нам в основном необходимо использовать Childсвязь для установления этой связи с has_many :through ассоциациями, так:

A Person has_many :grandchildren, through: :children
A Grandchild belongs_to: person, through: :children

Я не проверял этот код
Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...