我有一點想拿出一個有效的解決方案,這個設計問題的麻煩。本質上,該應用程序有一個公司模型。每個公司可以「定位」在多個地點(即舊金山,紐約,倫敦等)。同樣,每個地點可以有多個公司與之相關聯。正因爲如此,我的直覺是有公司模型和位置模型之間的關係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關係。任何幫助/指導讚賞!提前致謝!