3

生産注文を管理するアプリを実装しています。注文ごとに、印刷や曲げ加工など多くの工程(段階)があります。すべてのプロセスには、数量やコメントなどの共通の属性と、ステージ固有の属性があります。

create_table :stages do |t|
  t.integer :number
  t.decimal :roll_width
  t.decimal :quantity
  t.string :comments
  t.boolean :finished

  t.timestamps
end

create_table :printing_stages do |t|
  t.integer :color
  t.decimal :technical_card

  t.timestamp
end

create_table :bending_stages do |t|
  t.decimal :flap_width
  t.boolean :seal_distance

   t.timestamps
end

共通の属性と固有の属性に簡単にアクセスできるようにするために、ここに従うべき適切なアプローチについてはわかりません。

STI を使用すると、一部のステージには 10 以上の特定の属性があるため、巨大な sigle テーブルが作成されます。

ポリモーフィック アソシエーションを次のように使用する場合:

class Stage < ActiveRecord::Base
  belongs_to :stageable, :polymorphic => true
end

class SlittingStage ActiveRecord::Base
  has_one :stage, :as => stageable
end

class PrintingStage ActiveRecord::Base
  has_one :stage, :as => stageable
end

次に、たとえば、などの印刷段階のコメントにアクセスする必要がありますprinting_stage.stage.comments。これは、私見ですが、かなり面倒で、可能な限りエレガントではありません。

最後に、MTI を使用した場合の意味と結果についてはよくわかりません。

アドバイスをいただけますか?

4

1 に答える 1

2

この女性は私よりもうまく言います。約 20 分にジャンプすると、そこに答えがあります。

サンディ・メッツの「メイク・ア・メッス」

于 2013-01-18T22:23:39.190 に答える