0

Also habe ich ein bisschen eine komplexe Modellverknüpfung Setup, die ich nicht ganz richtig scheinen kann.Komplexe Modellverknüpfungen - Rails

ich habe:

      Owners  Doors  
    Clients -> Orders -> < | /
          Property - Windows 
            \ 
             Heating/Cooling 

So ist der Denkprozess ist, dass jede Eigenschaft viele Türen haben kann, Fenster, Heizung/Kühlung und Besitzer und jeder Besitzer können viele haben Eigenschaft.

Wenn ein um nur mit dem Eigentümer vorgelegt und Eigenschaft info (Adresse, etc.), wir gehen und wie viele Türen, Fenster, Heiz-/Kühlsystemen die Eigenschaft hat, aktualisieren Sie die Bestellen Sie und senden Sie es dann an den Client zurück.

Im Moment habe ich meine Modelle Setup fest, dass (kondensiert hier für platzsparende)

Clients has_many :orders 

Order -> belongs_to :property, :clients 
Order -> has_many :doors, :windows, :heating/cooling, through: :property 

Property -> has_many :doors, :windows, :heating/cooling, :owners 
Doors, Windows, Heating/Cooling, Owners -> belongs_to :property 

Also mein Problem ist, dass ich in der Lage sein zu wissen, welche Türen, Fenster und Heizung/Kühlung gezogen wurden auf welcher Bestellung. Also würde ich sagen, dass sie zur Bestellung gehören sollten ABER wenn mehrere Bestellungen auf der gleichen Immobilie eingehen, möchte ich nicht die gleichen Informationen für diese Modelle in meiner Datenbank mehrmals für diese Eigenschaft haben, nur weil sie auf eine kommen andere Reihenfolge, und möchten in der Lage sein, die Eigenschaft selbst nachzuschauen und alle damit verbundenen Aufträge, Türen, Fenster, Heizung/Kühlung zu sehen.

Ich hoffe, meine Erklärung war klar, wie ich noch ziemlich neu zu Schienen bin und wie die Verbände arbeiten und ihre Fähigkeiten, so dass jede Einsicht sehr hilfreich wäre, danke im Voraus.

Antwort

0

Scheint, als wäre der schnellste Ansatz, eine order_ids Spalte hinzuzufügen, serialisiert als ein Array, auf die Türen/Fenster/Heizung/Kühlung Tische. Sie benötigen jedoch Anwendungslogik, um den Spaltenstatus beizubehalten.

Unrelated: sind die Türen/Fenster/Heizung/Kühlung Modelle einzigartig genug, dass etwas wie eine items Tabelle zu tun und haben es polymorph würde nicht funktionieren?

+0

Die Modelle Türen/Fenster/Heizung/Kühlung sind einzigartig genug, um ihre eigenen Modelle/Tische zu rechtfertigen. Während sich einige Eigenschaften überlappen (Größe, Fläche usw.), haben sie viele eigene Eigenschaften. Mein anfänglicher Gedanke war, jedes Modell 'gehört' sowohl' Eigentum' UND 'Aufträge' zu ​​haben, aber meine Sorge ist, dass, wenn ein Auftrag für ein vorhandenes Eigentum durchgesetzt wird, wo wir bereits wissen, welche Art von Türen oder Fenstern es hat Bestellung erstellt eine neue Tür oder Fenster Datensätze und nicht auf die aktuellen. Ich frage mich, ob ich die Modelle auf polymorph setzen und sie bei Join-Tabellen mit beiden verbinden sollte. –