2017-05-25 101 views
0

所以我有一個有點複雜的模型關聯安裝,我似乎無法得到完全正確的。複雜的模型關聯 - Rails的

我:

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

所以思維過程是每個屬性可以有很多門,窗,加熱/冷卻系統,和業主,每個所有者可以有很多物業

爲了只與所有者財產信息(地址,等等),我們去找物業多少門,窗,加熱/冷卻系統具有提交,更新爲了,然後發回給客戶

現在,我有我的模型建立的是,(在這裏凝聚,節省空間)

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 

所以我的問題是,我希望能夠知道門,窗和加熱/冷卻被拉扯什麼在哪個訂單上。所以我會說,他們應該屬於訂單,但如果多個訂單進來在同一個屬性,我不希望在我的數據庫中的這些模型多次爲所述屬性具有相同的信息,因爲他們進來了不同的順序,同樣希望能夠查看自己的財產,並看到所有相關的訂單,門,窗戶,加熱/冷卻。

我希望我的解釋很清楚,因爲我現在還是相當新的軌和協會的工作和他們的能力使任何有識之士將是超級有幫助,在此先感謝。

回答

0

好像最快的方法是添加一個order_ids列,序列化爲一個數組,到門/窗/加熱/冷卻的表。您需要應用程序邏輯來維護列狀態。

無關:是門/窗戶/加熱/冷卻模型獨特的足夠做一些像items表和它是多形的不會工作?

+0

門/窗/加熱/冷卻模型是獨特的,足以保證自己的模式/表。雖然一些屬性重疊(大小,表面積等),但它們有很多屬性。 我最初的想法是讓每個模型'belongs_to'兩個'property'和'orders'但我擔心的是,如果一個訂單放在通過對現有的財產,我們已經知道它有什麼樣的門或窗的,在訂單將創建新的門或窗口記錄,而不是引用當前的記錄。我想知道是否應該將模型設置爲多態,並將它們連接到連接表上。 –