我正在实施一个应用来管理生产订单。每个订单都有许多流程(阶段),包括打印和弯曲。所有流程都有一些共同的属性,如数量和注释,以及一些阶段特定的属性:
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,我最终会得到一个巨大的sigle表,因为某些阶段有10个以上的特定属性。
如果我使用多态关联:
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的含义和后果。
你能给我一些建议吗?