如何查询自引用has_one关系

时间:2016-03-30 01:22:58

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

我有以下型号:

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)

我在这里缺少什么?

1 个答案:

答案 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