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:

  1. Das Pferd an einen anderen Eigentümer verkauft wird
  2. Der Besitzer wechselt Trainer oder Jockey
  3. Das Pferd von einem neuen Eigentümer in Anspruch genommen wird

Wie es jetzt aussieht, habe ich dieses Modell mit den folgenden Tabellen:

  1. Pferde
  2. Verbindungen (Join-Tabelle)
  3. 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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top