Virgin STI Hilfe
-
21-09-2019 - |
Frage
Ich arbeite an einem Pferderennen Anwendung und ich versuche STI zu verwenden ein Pferd Verbindungen zu modellieren. Ein Pferde Verbindungen wird von seinem Besitzer, Trainer und Jockey zusammen. Im Laufe der Zeit können Verbindungen für eine Vielzahl von Gründen ändern:
- Das Pferd an einen anderen Eigentümer verkauft wird
- Der Besitzer wechselt Trainer oder Jockey
- Das Pferd von einem neuen Eigentümer in Anspruch genommen wird
Wie es jetzt aussieht, habe ich dieses Modell mit den folgenden Tabellen:
- Pferde
- Verbindungen (Join-Tabelle)
- Interessengruppen (Stakeholder hat drei Unterklassen: Jockey, Trainer und Besitzer)
Hier sind meine clases und Verbände:
class Horse < ActiveRecord::Base
has_one :connection
has_one :owner_stakeholder, :through => :connection
has_one :jockey_stakeholder, :through => :connection
has_one :trainer_stakeholder, :through => :connection
end
class Connection < ActiveRecord::Base
belongs_to :horse
belongs_to :owner_stakeholder
belongs_to :jockey_stakeholder
belongs_to :trainer_stakeholder
end
class Stakeholder < ActiveRecord::Base
has_many :connections
has_many :horses, :through => :connections
end
class Owner < Stakeholder
# Owner specific code goes here.
end
class Jockey < Stakeholder
# Jockey specific code goes here.
end
class Trainer < Stakeholder
# Trainer specific code goes here.
end
Eine der Datenbank Ende, ich habe eine Spalte Typen in der Verbindungstabelle eingefügt.
Habe ich modelliert richtig dies. Gibt es einen besseren / elegantere Ansatz. Vielen Dank im Voraus für Sie Feedback.
Jim
Lösung
Bitte lesen Sie dieses Dokument auf STI mit in Schienen Projekte. Im Hinblick auf Verbindungen -. Polymorphe Assoziation ist die beste Wahl
Andere Tipps
Zuerst muss ich sagen, ich weiß nicht, was STI ist. Was bedeutet die Abkürzung steht für?
Ich verstehe nicht, warum Sie die Verbindung-Modell benötigen. Zu meinem Verständnis Ihrer Domain, könnten Sie einfach Verbindung weg verlassen und würde Gebrauch nicht einsetzen müssen: durch. Damit wäre es einfacher und Leistung verbessern. Ich sehe keine Funktionalität des Verbindungsmodell erstellt.