ruby-on-rails – 在最后一个has_many之后销毁关联:通过记录被删除

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在最后一个has_many之后销毁关联:通过记录被删除前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个常规的has_many,可以选择:dependent => :当删除父记录时,销毁以删除关联.有了has_many:through,可能还有其他父母与子记录相关联,所以:dependent => :摧毁没有任何效果.

如何确保在最后一个HMT协会成为孤儿后删除子记录?

解决方法

我发现的解决方案似乎是一个after_destroy回调,如:
class Parent < ActiveRecord::Base
  has_many :children,:through => :parentage
  after_destroy :destroy_orphaned_children

  private

  def destroy_orphaned_children
    children.each do |child|
      child.destroy if child.parents.empty?
    end
  end

end

猜你在找的Ruby相关文章