J'écris actuellement une application web intranet où les gens peuvent soumettre aux admins des demandes d'ajout de ressources différentes. L'exemple des demandes seraient:Alternatives pour utiliser le polymorphisme dans Ruby on Rails
- l'installation de programmes, dans ce cas l'utilisateur sélectionnera quel programme il veut installé
- quota de plus en plus, dans ce cas l'utilisateur ne suffit d'entrer la quantité d'espace disque dont il a besoin ou peut-être qu'il sélectionnez les quantités prédéfinies - 1GB, 10GB etc ...
- créer un nouvel alias email, dans ce cas, l'utilisateur tape simplement l'alias.
- ...
Je pensais avoir juste un UserRequests modèle avec la référence à l'expéditeur et deux attributs facultatifs on serait REFERENCE_ID qui refefrence à d'autres tables (pour exemple le programme qu'il veut installé) et un autre serait utilisé pour les champs de type libre comme alias de messagerie ou quota.
Donc mon problème est que en fonction du type de la demande, le modèle doit contenir soit:
- référence à autre table
- données entières
- données de chaîne
Basé sur le type de la requête l'action donnée devrait être prise - probablement l'alias de courrier électronique pourrait être ajouté des rails mais l'application sur l'ordinateur d'utilisateurs sera installée à la main.
Est-ce que quelqu'un a eu un problème similaire? Pensez-vous que l'utilisation du polymorphisme pour ce genre de choses est une bonne idée? Avez-vous des suggestions sur la façon d'organiser les données dans les tableaux?
C'est exactement ce que je cherchais et votre message m'a un peu éclairé. Merci. –
Ian a raison, STI est parfait pour votre demande ici. Pour un exemple de quand le polymorphisme serait utile dans ce cas, ce serait si vous aviez à la fois un utilisateur qui a beaucoup de demandes, et un programme qui a beaucoup de demandes.Ensuite, ils pourraient tous deux avoir beaucoup de demandes grâce au polymorphisme, et les demandes peuvent toujours être STI autant qu'ils veulent – Houen