0

J'ai donc une configuration d'association de modèle complexe que je n'arrive pas à obtenir.Associations de modèles complexes - Rails

J'ai:

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

Ainsi, le processus de pensée est que chaque propriété peut avoir plusieurs portes, fenêtres, systèmes de chauffage/refroidissement, et les propriétaires, et chaque propriétaire peut avoir beaucoup propriété.

Lorsqu'un commande est envoyée uniquement avec propriétaire et propriété info (adresse, etc.), nous allons et trouver combien de portes, fenêtres, systèmes de chauffage/refroidissement de la propriété a, mettre à jour le commande, puis l'a renvoyé au client .

En ce moment j'ai mes modèles installation qui, (condensé ici pour économiser de l'espace)

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 

Donc mon problème est que je veux être en mesure de savoir ce que les portes, les fenêtres et le chauffage/refroidissement ont été tirés sur quel ordre. Donc, je dirais qu'ils devraient appartenir à l'ordre MAIS si plusieurs commandes arrivent sur la même propriété, je ne veux pas avoir la même information pour ces modèles dans mon db plusieurs fois pour cette propriété juste parce qu'ils viennent sur un ordre différent, et veulent également être en mesure de rechercher la propriété elle-même et voir tous les ordres associés, portes, fenêtres, chauffage/refroidissement. J'espère que mon explication était claire car je suis encore assez nouveau sur les rails et comment les associations fonctionnent et leurs capacités, donc toute idée serait super utile, merci d'avance.

Répondre

0

Il semblerait que l'approche la plus rapide serait d'ajouter une colonne order_ids, sérialisée en tant que matrice, sur les portes/fenêtres/tables de chauffage/refroidissement. Vous auriez besoin d'une logique d'application pour conserver l'état de la colonne. Non apparenté: les modèles de portes/fenêtres/chauffage/refroidissement sont-ils suffisamment uniques pour faire quelque chose comme une table items et doivent-ils être polymorphes?

+0

Les modèles de portes/fenêtres/chauffage/refroidissement sont suffisamment uniques pour justifier leurs propres modèles/tables. Alors que certaines propriétés se chevauchent (taille, surface, etc.), elles ont beaucoup de leurs propres propriétés. Ma pensée initiale était de faire en sorte que chaque modèle 'appartient_à' à la fois 'property' et' orders' mais mon souci est que si un ordre est passé pour une propriété existante où nous savons déjà quel genre de portes ou de fenêtres il a, l'ordre créera de nouveaux enregistrements de portes ou de fenêtres et ne référencera pas les enregistrements actuels. Je me demande si je devrais mettre les modèles à polymorphique et les relier aux tables jointes aux deux. –