1

У меня есть следующие модели:Как запросить автореферентное HAS_ONE отношений

class PropertyType < ApplicationRecord 
    has_one :parent, :class_name => "PropertyType" 
    has_and_belongs_to_many :properties 
end 

Это может иметь родитель его собственного типа класса. Однако ни один из следующих запросов не работает:

PropertyType.where("property_type_id IS NULL") 
PropertyType.where(parent: nil) 

Что мне здесь не хватает?

+0

Какова схема вашей базы данных для этой модели. – Doon

+0

Да, трудно сказать без контекста и схемы. В частности, что не работает? Вы получаете ошибку или неправильный/пустой результат? –

ответ

1

Я думаю, вы можете хотеть :belongs_to, а не :has_one. Вы можете также рассмотреть возможность использования именования внешнего ключа, чтобы направление отношений было более понятным. В этом случае вам нужно будет явно указать внешний ключ:

class ProjectType 
belongs_to :parent, class_name: "ProjectType", foreign_key: :parent_project_type_id 
has_many :children, class_name: "ProjectType", foreign_key: :parent_project_type_id 

# ... 
end 
Смежные вопросы