module ActiveRecord::Scoping::Default::ClassMethods

def build_default_scope(relation = relation(), all_queries: nil)

def build_default_scope(relation = relation(), all_queries: nil)
  return if abstract_class?
  if default_scope_override.nil?
    self.default_scope_override = !Base.is_a?(method(:default_scope).owner)
  end
  if default_scope_override
    # The user has defined their own default scope method, so call that
    evaluate_default_scope do
      relation.scoping { default_scope }
    end
  elsif default_scopes.any?
    evaluate_default_scope do
      default_scopes.inject(relation) do |combined_scope, scope_obj|
        if execute_scope?(all_queries, scope_obj)
          scope = scope_obj.scope.respond_to?(:to_proc) ? scope_obj.scope : scope_obj.scope.method(:call)
          combined_scope.instance_exec(&scope) || combined_scope
        else
          combined_scope
        end
      end
    end
  end
end