2017-06-20 86 views
0

我有一點想拿出一個有效的解決方案,這個設計問題的麻煩。本質上,該應用程序有一個公司模型。每個公司可以「定位」在多個地點(即舊金山,紐約,倫敦等)。同樣,每個地點可以有多個公司與之相關聯。正因爲如此,我的直覺是有公司模型和位置模型之間的關係has_many_belongs_to_many。例如:多對一許多獨特協會

A公司舊金山和紐約位置。

B公司倫敦,舊金山和慕尼黑位置。

公司C有位置邁阿密

目前,我的ActiveRecord的關係設置如下:

class Company < ApplicationRecord 
has_and_belongs_to_many :locations 
end 

class Location < ApplicationRecord 
has_and_belongs_to_many :companies 
end 

我試圖做到這一點,用戶可以到公司「添加位置」的功能,如果該位置已經存在,那麼它將與該公司相關聯。否則,如果該位置不存在,它將被創建,然後與該公司關聯。按照上面的例子:

公司d創建。它在邁阿密和休斯敦的位置。由於邁阿密已經在數據庫中,參考了從邁阿密到公司D.然而,由於休斯敦沒有在表中,它首先創建,然後的關係休斯頓之間進行公司D

我想到了一個好辦法做到這一點是使用某種形式的唯一指標,但就是阻止我加入同一個城市兩次(明顯)。從本質上講,是沒有辦法,我可以創建一個公司和位置之間的關係的方式,「檢查」,如果輸入的位置已經存在於表中的位置,如果這樣做參考/關聯。不知道如果我處理這個正確的「Rails的方式或過於複雜。/我是否甚至需要has_many_belongs_to_many關係。任何幫助/指導讚賞!提前致謝!

回答