继续我的情况,我已经通过has_many通过关联建立了两个模型,如here in the rails guides所述。从另一个访问一个通常是通过一个数组完成,但我真的不想要一个数组,我想3个单独的值。
实施例: 我有两个型号,汽车和车库(加上car_garage加入)。我想在每个车库里放3辆车,我也想将这些车分配到我的车库表中的相应列,'garage.everyday_car','garage.weekly_car'和'garage.special_car'。
所以不要像这样收集一个collection_select中的所有3个值
= f.collection_select(:car_ids, Car.all, :id, :name), {}, {multiple: true}
是否可以将阵列分成三个选择框?我可以在数组中指定选择框值占用的位置,例如:
# attempt to assign the monthly car as 3rd in the array every time
= f.collection_select(:car_ids[2], Car.all, :id, :name), {}, {multiple: true}
然后以某种方式将该值连接到我的车库表中的特定列,例如 - garage.monthly_car == car_ids [2]
还是有一种我在这里失踪的方式?基本上我想要3种不同类型的汽车,每辆汽车分配到我车库的一列。
很抱歉,如果解释得不好,我仍然试图直截了当地说,如果您认为代码示例或更多信息可以帮助发表评论,谢谢。我很感激任何帮助。
答案 0 :(得分:0)
我并不完全理解你想要什么,但如果你想让关系更丰富,你总是可以用模型扩展连接表(我假设你在使用has_many :through
时这样做了)。
我所说的是你可以添加一个列:type
,只需对每种类型使用三个集合选择,该关系存储在控制器中。
您还可以在Garage模型中为每种类型的汽车创建一个范围,这样您就可以使用Garage.special_car
或任何您需要的范围。
这种方法避免了数据的重复(以及随之而来的所有麻烦)。
如有疑问,请发表评论。
GL& HF。