我们有一个非常简单的团队和角色模型
class Group < ActiveRecord::Base
has_many :roles, :dependent => :destroy
end
class Role < ActiveRecord::Base
belongs_to :group
after_destroy :ensure_last_role
private
def ensure_last_role
raise "Can't delete last role" if group.roles.count.zero?
end
end
after_destroy 完美运行,不允许最后一个角色被意外破坏。但这也可以防止该组在 :dependent => :destroy 尝试销毁所有角色时被销毁。当一个组被破坏时是否可以不调用 ensure_last_role 或者有更好的方法来解决这个问题?