#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
У меня есть модель пользователя и таблица отношений, называемая ParentsChildren.
Я пытаюсь создать два отношения в пользовательской модели, чтобы User#children
возвращать всех дочерних пользователей и User#parents
возвращать всех родителей пользователей.
Мне уже удавалось заставить это работать раньше, но на этот раз я делаю что-то не так, и я не уверен, что именно.
class ParentsChildren < ApplicationRecord
self.table_name = 'parents_children'
belongs_to :parent_user, class_name: 'User'
belongs_to :child_user, class_name: 'User'
end
class User
has_many :parent_relationships, class_name: 'ParentsChildren', foreign_key: :parent_user_id
has_many :child_relationships, class_name: 'ParentsChildren', foreign_key: :child_user_id
has_many :children, through: :parent_relationships, class_name: 'User', source: :child_user
has_many :parents, through: :child_relationships, class_name: 'User', source: :parent_user
end
# => uninitialized constant ParentsChildren::ChildUser
Ответ №1:
Понял это. Ключ состоял в том, чтобы удалить ‘User’ в качестве имени класса для has_many :parents
и has_many :users
. Это выводится из приведенных источников.
class User
has_many :parent_relationships, foreign_key: :child_user_id,
class_name: 'ParentsChildren'
has_many :children, through: :parent_relationships,
source: :parent_user
has_many :child_relationships, foreign_key: :parent_user_id,
class_name: 'ParentsChildren'
has_many :parents, through: :child_relationships,
source: :child_user
end