生産注文を管理するアプリを実装しています。注文ごとに、印刷や曲げ加工など多くの工程(段階)があります。すべてのプロセスには、数量やコメントなどの共通の属性と、ステージ固有の属性があります。
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 を使用した場合の意味と結果についてはよくわかりません。
アドバイスをいただけますか?