def extending(*modules, &block)
      if modules.any? || block
        spawn.extending!(*modules, &block)
      else
        self
      end
    end
def extending(*modules, &block)
      if modules.any? || block
        spawn.extending!(*modules, &block)
      else
        self
      end
    end
Used to extend a scope with additional methods, either through
 a module or through a block provided.

 The object returned is a relation, which can be further extended.

 === Using a module

   module Pagination
     def page(number)
       # pagination code goes here
     end
   end

   scope = Model.all.extending(Pagination)
   scope.page(params[:page])

 You can also pass a list of modules:

   scope = Model.all.extending(Pagination, SomethingElse)

 === Using a block

   scope = Model.all.extending do
     def page(number)
       # pagination code goes here
     end
   end
   scope.page(params[:page])

 You can also use a block and a module list:

   scope = Model.all.extending(Pagination) do
     def per_page(number)
       # pagination code goes here
     end
   end