我想删除与被销毁的组相关联的group_maps的所有记录。 In the docs,它说
如果使用:through选项,则会销毁连接记录,而不是对象本身。
我很困惑。
group.rb
class Group < ApplicationRecord
belongs_to :user
has_many :group_maps
has_many :users, :through => :group_maps
before_destroy :destroy_group_maps
def destroy_group_maps
self.group_maps.delete_all
end
end
编辑1:
顺便说一下,我试过添加,:dependent => destroy
和
:dependent => delete_all
也是如此。他们都没有工作。
编辑2:
的 group_maps_controller.rb
class GroupMapsController < ApplicationController
def destroy
GroupMap.find[params[:id]].destroy
end
end
答案 0 :(得分:1)
在destroy_group_maps
方法中,输入:
def destroy_group_maps
self.group_maps.each { |group_map| group_map.destroy }
end
答案 1 :(得分:1)
您可以添加 before_destroy
来删除关联,而不是调用dependent: :destroy
来销毁关联。
dependent: :destroy
会删除关联的记录。
我更喜欢使用dependent: :destroy
而不是before_destroy
class Group < ApplicationRecord
belongs_to :user
has_many :group_maps, dependent: :destroy
has_many :users, :through => :group_maps
before_destroy :destroy_group_maps
def destroy_group_maps
self.group_maps.delete_all
end
end