Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用类名时依赖销毁失败_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 使用类名时依赖销毁失败

Ruby on rails 使用类名时依赖销毁失败,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个自引用模型,它形成了一个树结构。节点如下所示: class Node < ActiveRecord::Base belongs_to :parent, class_name: Node has_many :children, :dependent => :destroy, class_name: Node end 我相信现在发生的事情是,乘法器期望父节点id是节点id(因为类名)。我不知道如何解决这个问题 编辑 应用答案后的模型: class Node < A

我有一个自引用模型,它形成了一个树结构。节点如下所示:

class Node < ActiveRecord::Base
  belongs_to :parent, class_name: Node
  has_many :children, :dependent => :destroy, class_name: Node
end
我相信现在发生的事情是,乘法器期望父节点id是节点id(因为类名)。我不知道如何解决这个问题

编辑 应用答案后的模型:

class Node < ActiveRecord::Base
  belongs_to :parent, class_name: Node, foreign_key: :parent_id
  has_many :children, class_name: Node, foreign_key: :parent_id, :dependent => :destroy
end
class节点:销毁
结束

您的问题是对的,因为您将名称从
节点更改为
:父节点
,Rails在默认情况下将查找
节点id
,而不是
父节点id
。要解决此问题,请添加
外键::父项id

所以这条线应该是这样的:

belongs_to :parent, class_name: Node, foreign_key: :parent_id

尝试一下,我似乎仍然会犯同样的错误。除了编辑那一行,还有什么我需要做的吗?我尝试重新启动服务器,但没有效果。只是重新看了一眼,似乎这也需要为
:儿童
执行。是的,您也需要在
上指定它。同一个键
:父id
,非常有意义。我还为孩子们添加了外键,它允许删除。
belongs_to :parent, class_name: Node, foreign_key: :parent_id