Ruby on rails Rails外键指向同一个表

Ruby on rails Rails外键指向同一个表,ruby-on-rails,Ruby On Rails,我有一个rails应用程序,其中包含工作订单。我将从另一个系统加载工作单。该系统使用一个表作为父级和子级工作单 我在workorders表中添加了一个名为parent_id的字段 这是Workorder模型中的正确编码吗 class ParentWorkorder belongs_to :parent, class_name => "Workorder" belongs_to :child, class_name => "Workorder", :foreign_ke

我有一个rails应用程序,其中包含工作订单。我将从另一个系统加载工作单。该系统使用一个表作为父级和子级工作单

我在workorders表中添加了一个名为parent_id的字段

这是Workorder模型中的正确编码吗

 class ParentWorkorder
   belongs_to :parent, class_name => "Workorder"
   belongs_to :child, class_name =>  "Workorder", :foreign_key => "parent_id"
 end
或者,您会建议不要这样做,而是创建一个子workorder表吗?我认为这可能会使它更难与其他系统集成


任何指导都将不胜感激

我会把孩子放在has_一或has_多(如果父母可以有多个孩子的话)。但是是的,这很有效


如果可能的话,您可能希望养成使用符号而不是字符串的习惯。

您也可以在一个带有Rails的表中完成这项工作,并且可以在一个模型中完成这项工作。我不明白为什么你需要像以前那样用一个额外的
ParentWorkorder
模型来使你的应用程序复杂化。我会做以下几点:

class Workorder < ActiveRecord::Base
  belongs_to :parent, :class_name => "Workorder", :foreign_key => "parent_id"
  has_many :children, :class_name => "Workorder", :foreign_key => "parent_id"
end
class Workorder“Workorder”、:foreign\u-key=>“parent\u-id”
有多个:子项,:class\u name=>“Workorder”,:foreign\u key=>“parent\u id”
结束

我很确定这将为您提供所需的功能。

不要忘记
类名之前的
!感谢您的输入——但是,请给我一个使用符号而不是字符串的示例。抱歉我的无知。您可以做的不是“工作顺序”,而是“工作顺序”,而不是“父id”:父id符号类似于字符串,但不可变,占用的资源更少。我接受它
t。引用:迁移文件中的workorder
将创建一个名为
parent\u id
的列?