Ich schreibe gerade eine Intranet-Webapplikation, wo Leute Admin-Anfragen zum Hinzufügen von verschiedenen Ressourcen hinzufügen können. Die Beispielanforderungen wären:
Ich habe darüber nachgedacht, nur ein Modell UserRequests mit dem Verweis auf den Absender und zwei optionale Attribute wäre eine reference_id, die sich auf andere Tabellen beziehen würde (für Beispiel das Programm, das er installiert haben will) und ein anderes würde für freie Typenfelder verwendet werden wie E-Mail Alias oder Quota.
Mein Problem ist also, dass das Modell basierend auf dem Typ der Anfrage entweder folgendes enthalten sollte:
Basierend auf dem Typ der Anfrage sollte die angegebene Aktion ausgeführt werden - wahrscheinlich E-Mail-Alias könnte von Schienen hinzugefügt werden, aber die Anwendung auf dem Computer des Benutzers wird von Hand installiert.
Hat jemand ein ähnliches Problem? Denkst du Polymorphismus für diese Art von Sachen zu verwenden ist eine gute Idee? Haben Sie Vorschläge zum Organisieren von Daten in den Tabellen?
Single Table Vererbung! Auf diese Weise können Sie für jede Art von Anfrage benutzerdefinierte Validierungen durchführen, während alle Anfragen in derselben Tabelle gespeichert sind.
%Vor% Und natürlich, alias Ihre string_data
und integer_data
auf email
oder was auch immer, um Ihren anderen Code ein wenig mehr Bedeutung zu haben. Lassen Sie das Modell die kleine Black Box sein, die alles verdeckt.
Ich würde polymorphe Assoziationen verwenden, die ein Modell zu mehr als einem anderen Modell mit einer einzigen Assoziation gehören lassen. Etwas wie das:
%Vor%Tags und Links ruby-on-rails polymorphism