2017-08-01 57 views
0

我正在開發rails api。 我無法在一列中保存外鍵數組。 有兩種模式:Block和Employee。員工擁有多個員工,並擁有多個員工。多對多的關係。 這是塊的索引。將多個外鍵存儲在一個屬性

[{ 
    id:1, 
    name: "Block A" 
}, 
{ 
    id:2, 
    name: "Block B" 
}, 
{ 
    id:3, 
    name: "Block C" 
} 
] 

這是員工的發佈請求的主體。

{ 
    "first_name":"John", 
    "last_name": "Smith", 
    "email": "[email protected]", 
    "block_ids":'[1, 2, 3]' 
} 

創建僱主用戶必須指定僱員控制的塊。在block_ids列中,我想存儲上述塊的外鍵。

1)問題:如何在一個模型屬性中使用數組存儲多個外鍵。

所以史密斯控制哪些ID是等於1,2和3

2)問題的塊:然後,使用導軌控制器如何知道哪些塊的用戶控制。我的意思是如何通過將在block_ids屬性中指定的id來知道塊的名稱。

+1

你的問題是什麼?你想做什麼? – SteveTurczyn

+0

@SteveTurczyn。我編輯了我的問題 –

+0

您的員工可以擁有多個區塊,並且一個區塊可以屬於許多員工?在Rails中,我們不存儲這樣的數據,您將不得不創建自定義方法來獲取數據。 – Deep

回答

1

這是錯誤的方法。不要將外鍵存儲在數組中。改爲建立連接表。請使用has-and-belongs-to-many relationship。這是爲了當你不需要參考將兩個模型連成一個東西的東西時,一輛汽車有很多零件。如果連接是真實的,例如連接醫生和患者的約會,然後使用has-many-through relationship,其中連接表具有其自己的模型。

這些方法更好的原因是,如果將外鍵存儲在數組中,SQL將無法使用正確的JOIN查詢數據。此外,您無法將其標記爲外鍵,因此如果您需要,數據庫將無法爲您執行referential integrity

相關問題