4

作業指示書を含む Rails アプリがあります。別のシステムから作業指示書をロードします。そのシステムは、親と子の作業指示書に 1 つのテーブルを使用します。

parent_id という workorders テーブルにフィールドを追加しました

これは Workorder モデルの正しいコーディングですか?

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

または、これを行うことをお勧めしません - 代わりに、子 workorder テーブルを作成しますか? これにより、他のシステムとの統合が難しくなる可能性があると思います。

どんなガイダンスも大歓迎です!

4

2 に答える 2

4

これは、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

これにより、必要な機能が提供されると確信しています。

于 2013-01-17T01:56:40.853 に答える
2

子を has_one または has_many として配置します (親が複数持つことができる場合)。しかし、はい、これはうまくいきます。

可能であれば、文字列の代わりに記号を使用する習慣を身につけたいと思うかもしれません。

于 2013-01-17T01:31:09.043 に答える