require "active_support/concern"

module RailsSoftDeletable
  module Associations
    extend ActiveSupport::Concern

    included do
      def target_scope
        return klass.scoped if options[:polymorphic] && klass.nil?

        if options[:with_deleted] && klass.soft_deletable?
          klass.with_deleted
        else
          klass.scoped
        end
      end
    end
  end
end

require "active_support/concern"

module RailsSoftDeletable
  module Associations
    extend ActiveSupport::Concern

    included do
      alias_method_chain :target_scope, :deleted
    end

    def target_scope_with_deleted
      scope = target_scope_without_deleted

      if scope && options[:with_deleted] && klass.soft_deletable?
        scope = scope.with_deleted
      end

      scope
    end
  end
end

Use alias_method_chain instead of reimplementing method
Use alias_method_chain instead of reimplementing method
