# File lib/active_record/scoping/named.rb, line 172
        def scope(name, scope_options = {})
          name = name.to_sym
          valid_scope_name?(name)
          extension = Module.new(&Proc.new) if block_given?

          scope_proc = lambda do |*args|
            options = scope_options.respond_to?(:call) ? unscoped { scope_options.call(*args) } : scope_options
            options = scoped.apply_finder_options(options) if options.is_a?(Hash)

            relation = scoped.merge(options)

            extension ? relation.extending(extension) : relation
          end

          singleton_class.send(:redefine_method, name, &scope_proc)
        end