J'applique une application pour gérer les commandes de production. Chaque commande a de nombreux processus (étapes), y compris l'impression et le pliage. Tous les processus ont des attributs communs que la quantité et les commentaires, et quelques spécifiques au stade:Approche de l'héritage: STI? MTI? ou simple association polymorphe?
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
Je ne suis pas sûr de l'approche de Propper à suivre ici afin de pouvoir accéder facilement à leurs attributs communs + spécifiques . Si j'utilise STI, je me retrouverai avec une énorme table sigle puisque certaines étapes ont 10+ attributs spécifiques.
Si j'utiliser des associations polymorphiques comme:
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
alors je dois accéder par exemple les commentaires d'étape d'impression tels que printing_stage.stage.comments
, qui est, à mon humble avis, assez lourd et pas si élégante que possible.
Enfin, je ne suis pas sûr des implications et des conséquences de l'utilisation de MTI.
Pouvez-vous me donner quelques conseils?