首页 > 解决方案 > Rails has_many assign child ids 使父级无效,因为父级必须有一个子级

问题描述

这是模型关联

class Driver
  has_many :cars

  validates :cars, presence: true
end
class Car
  belongs_to :driver
end

汽车记录已经存在。它不需要有驱动程序

id 为 1 的第一辆车,分配给司机 1

driver1.car_ids = [1]

driver1 现在有车了

现在我们用汽车 1 创建司机 2

driver2.car_ids = [1]

driver1 变得无效,因为它不再有汽车

处理这个问题的最佳方法是什么?

标签: ruby-on-railshas-many

解决方案


失败的原因是,在您当前的设置中,一辆车只能有一个司机。由于您将 driver1 分配给汽车,然后将 driver2 分配给汽车,因此 driver2 会覆盖 driver1,从而使 driver2 成为汽车所有者。如果你想在一辆车上有很多司机,你应该把你的设置改成这样:

class Car
  has_many :drivers
end

这将允许您为您的汽车分配许多司机(或仅一名司机,如果这是有意的话)。


推荐阅读