当关联对象被销毁时,如何将belongs_to关联设置为Nil

时间:2013-12-05 19:03:09

标签: ruby-on-rails

说我有:

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魔术来处理这个问题。或者不太理想的是外键约束。

1 个答案:

答案 0 :(得分:13)

dependent: :nullify型号Brand怎么样?

4.3.2.4:依赖

控制关联对象在其所有者被销毁时会发生什么:

...

:nullify会将外键设置为NULL。回调不会被执行。

...

http://guides.rubyonrails.org/association_basics.html#has-many-association-reference