2010-07-07 6 views
1

J'utilise l'héritage de table unique dans StudentHours et TeacherHours, qui ont une heure parente.Héritage du contrôleur dans Ruby on Rails - accès au modèle et au contrôleur dans la classe parente

Le code du modèle est la plupart du temps dans hour.rb, et très peu student_hour.rb et teacher_hour.rb

Maintenant, je me suis rendu compte que la plupart du code du contrôleur est Duplicate, donc je l'ai créé un hours_controller est le parent de students_controller et teachers_controller. Parce que le hours_controller instancier des objets modèles tels que TeacherHours.new j'ai créé un accesseur dans les classes d'enfants tels que:

def MyModel 
@mymodel = "TeacherHours" 
end 

... alors le hours_controller appelle simplement MyModel.new

De temps en temps il y a d'autres modèles qui sont référencés et parfois j'appelle même 'render' sur une vue donc j'ai fait des accesseurs dans les classes enfants pour ceux-là aussi.

Je ne trouve pas d'exemple de ce que font les autres. Alors, est-ce mauvais pour une raison ou une autre? Pourquoi avez-vous besoin d'utiliser l'héritage pour le comportement de ces modèles?

Répondre

0

Cela ressemble à un héritage inutile, à la fois dans les modèles et les contrôleurs.

+1

Je n'en ai pas besoin, mais j'ai choisi de le faire car toutes les méthodes seraient sinon dupliquées à la fois dans les contrôleurs et dans les modèles. – 99miles

+0

Une alternative pourrait être d'aplatir l'héritage de votre modèle et d'utiliser un seul contrôleur. Quelle est la valeur d'avoir les deux sous-types de modèles? Vous pouvez probablement obtenir le même comportement sans la complexité de l'utilisation de l'héritage. – Winfield

Questions connexes