class ActiveRecord::Associations::HasManyAssociation

def handle_dependency

def handle_dependency
  case options[:dependent]
  when :restrict_with_exception
    raise ActiveRecord::DeleteRestrictionError.new(reflection.name) unless empty?
  when :restrict_with_error
    unless empty?
      record = owner.class.human_attribute_name(reflection.name).downcase
      owner.errors.add(:base, :'restrict_dependent_destroy.has_many', record: record)
      throw(:abort)
    end
  when :destroy
    # No point in executing the counter update since we're going to destroy the parent anyway
    load_target.each { |t| t.destroyed_by_association = reflection }
    destroy_all
  when :destroy_async
    load_target.each do |t|
      t.destroyed_by_association = reflection
    end
    unless target.empty?
      association_class = target.first.class
      if association_class.query_constraints_list
        primary_key_column = association_class.query_constraints_list
        ids = target.collect { |assoc| primary_key_column.map { |col| assoc.public_send(col) } }
      else
        primary_key_column = association_class.primary_key
        ids = target.collect { |assoc| assoc.public_send(primary_key_column) }
      end
      ids.each_slice(owner.class.destroy_association_async_batch_size || ids.size) do |ids_batch|
        enqueue_destroy_association(
          owner_model_name: owner.class.to_s,
          owner_id: owner.id,
          association_class: reflection.klass.to_s,
          association_ids: ids_batch,
          association_primary_key_column: primary_key_column,
          ensuring_owner_was_method: options.fetch(:ensuring_owner_was, nil)
        )
      end
    end
  else
    delete_all
  end
end