2014-01-22 17 views
0

繼承人我的情況,我已經建立了兩個模型通過has_many通過協會概述here in the rails guides。從另一個訪問一個通常會通過一個數組來完成,但是我並不真的想要一個數組,我想要3個單獨的值。使用has_many通過關聯將Rails分配給不同的表列。

例如: 我有兩個模型,汽車和車庫(加car_garage加入)。我想在每個車庫中安裝3輛汽車,我還希望將每輛汽車分配到我的車庫中的相應列'garage.everyday_car','garage.weekly_car'和'garage.special_car'。

所以,而不是收集所有的3個值中的一個collection_select這樣

= f.collection_select(:car_ids, Car.all, :id, :name), {}, {multiple: true} 

是否有可能在陣列分成三個選擇框?我在哪裏可以指定數組的選擇框的值將佔用,如在位置:

然後以某種方式該值連接到特定的列在我的車庫裏的表像 - garage.monthly_car == car_ids [ 2]

或者有沒有我在這裏失蹤的方法?基本上我希望有3種不同類型的汽車被分配到我的車庫中的一列。

對不起,如果這是很難解釋,我仍然試圖讓它在我的腦海,如果你認爲代碼示例或更多的信息可以幫助發表評論謝謝。我會很感激任何幫助。

回答

0

我不完全理解你想要什麼,但是如果你想讓關係變得更加豐富,你可以隨時使用模型來擴展連接表(我假設你在使用has_many :through時也這樣做了)。

我在說的是,你可以添加一列:type,並簡單地爲每個類型使用三個集合選擇,該關係存儲在控制器中。

您也可以爲車庫模型中的每種車型創建一個範圍,因此您可以使用Garage.special_car或任何您需要的。

這種方法避免了數據的重複(以及隨之而來的所有麻煩)。

如果有疑問,請發表評論。

GL & HF。