删除所有者时从记录中删除引用ID

hat*_*enn 4 activerecord ruby-on-rails associations

假设我有一个Post模型:

class Post < ActiveRecord::Base
  belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)

Category模型:

class Category < ActiveRecord::Base
  has_many: :posts
end
Run Code Online (Sandbox Code Playgroud)

我可以使用dependent: :destroy删除特定类别时删除所有帖子,但我不想删除帖子,我只想通过设置category_id这些帖子的列来删除与该特定类别的关联nil.

是否有"Rails方式"开箱即用,或者我是否需要使用一些回调?

J P*_*ato 6

使用dependent :: nullify

根据Rails指南:

:nullify导致外键设置为NULL.回调不会执行.

所以你有:

class Category < ActiveRecord::Base
  has_many: :posts,
             dependent: :nullify
end
Run Code Online (Sandbox Code Playgroud)