J'essaie de trouver une méthode OO propre pour implémenter un problème que j'ai rencontré avec DBIx :: Class. J'ai une table d'utilisateur qui contient des informations communes à tous les utilisateurs. Chaque utilisateur peut également avoir plusieurs classes différentes, chacune ayant ses propres informations requises. Ainsi, par exemple, un utilisateur peut être un administrateur et un auteur. Il existe des tables distinctes pour les classes admin et author.DBIx :: Class abstract parent ResultSet
Ce que je veux être en mesure de faire est de créer une classe de base commune pour accéder à toutes les classes de l'objet utilisateur. Donc une classe de base appelée Schema :: UserClass et deux sous-classes appelées Schema :: UserClass :: Admin et Schema :: UserClass :: Author. Ce que je voudrais pouvoir faire des choses comme:
# Get current user
my $user = MyApp->get_user();
# Get user classes
my @classes = $user->classes->all();
for my $class (@classes) {
# Print class name
print $class->name;
}
Un problème similaire est présenté ici: http://dbix-class.35028.n2.nabble.com/OO-advice-do-a-subclass-do-something-else-td5614176.html. Mais la solution est sous-partie à mon avis car il faut ajouter une nouvelle relation pour chaque classe.
Je ne vois pas comment une relation peut être faite à la classe de base avec la connaissance de toutes les sous-classes. Toute aide serait très appréciée.