【问题标题】:How to query a self-referencing has_one relationship如何查询自引用的 has_one 关系
【发布时间】:2016-03-30 01:22:57
【问题描述】:

我有以下型号:

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)

我在这里错过了什么?

【问题讨论】:

  • 该模型的数据库架构是什么样的。
  • 是的,没有上下文和架构很难说。具体来说,什么不起作用?您是否收到错误或错误/空结果?

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


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 2020-07-16
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    相关资源
    最近更新 更多