3

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?

Répondre

Questions connexes