Method: ActiveRecord::QueryMethods#extending

Defined in:
activerecord/lib/active_record/relation/query_methods.rb

#extending(*modules, &block) ⇒ Object

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


1434
1435
1436
1437
1438
1439
1440
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 1434

def extending(*modules, &block)
  if modules.any? || block
    spawn.extending!(*modules, &block)
  else
    self
  end
end