说我有:
class Car < ActiveRecord::Base
belongs_to :brand
end
class Brand < ActiveRecord::Base
has_many :cars
end
如果我销毁一个品牌对象,则子车辆仍然会将car.brand_id
属性设置为已销毁的brand.id
。
如何在销毁母品牌时取消儿童汽车的car.brand_id
?
我认为ActiveRecord关系会处理这个问题,并防止孤立的对象。
我不想dependent: :destroy
汽车,但只想让他们的car.brand_id
设置为零。
我不想为此写一个after_commit
,我希望Rails魔术来处理这个问题。或者不太理想的是外键约束。
答案 0 :(得分:13)
dependent: :nullify
型号Brand
怎么样?
4.3.2.4:依赖
控制关联对象在其所有者被销毁时会发生什么:
...
:nullify
会将外键设置为NULL。回调不会被执行。
...
http://guides.rubyonrails.org/association_basics.html#has-many-association-reference