Rails 个活动记录中的自引用问题

Self Referencing problem in Rails active record

我有一个名为 Task 的 rails 模型。我在我的模型中使用自引用设计

class Task < ApplicationRecord

  belongs_to :parent, class_name: "Task"
  has_many :children, class_name: "Task",foreign_key: "parent_id"
end

所以当我创建我的第一个对象时,它一直说“父对象必须存在”。我不确定如何使对象成为此层次结构中的根。请帮我解决这个问题

belongs_to :parent, class_name: "Task" 更改为 belongs_to :parent, optional: true, class_name: "Task"

有了它,您将能够在没有 parent 的情况下创建任务。要验证任务是否为 child,您可以检查 parent_id 是否具有任何值:

def child?
  parent_id.present?
end

参考:https://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html