Rails外键到同一个表

时间:2013-01-17 01:25:10

标签: ruby-on-rails

我有一个包含工作人员的rails应用程序。我将从另一个系统加载工作人员。该系统为父母和子工作人员使用单个表格。

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

的字段

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

 class ParentWorkorder
   belongs_to :parent, class_name => "Workorder"
   belongs_to :child, class_name =>  "Workorder", :foreign_key => "parent_id"
 end

或者你会建议不要这样做 - 而是创建一个子工作订单表?我认为这可能会使与其他系统集成更加困难。

非常感谢任何指导!

2 个答案:

答案 0 :(得分:3)

您也可以在一个包含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

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

答案 1 :(得分:2)

我会将孩子视为has_one或has_many(如果父母可以有多个)。但是,这很有效。

您可能希望养成在可能的情况下使用符号而不是字符串的习惯。