Method: ActiveRecord::QueryMethods#extending
- Defined in:
- lib/active_record/relation/query_methods.rb
#extending(*modules) ⇒ 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.scoped.extending(Pagination)
scope.page(params[:page])
You can also pass a list of modules:
scope = Model.scoped.extending(Pagination, SomethingElse)
Using a block
scope = Model.scoped.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.scoped.extending(Pagination) do
def per_page(number)
# pagination code goes here
end
end
243 244 245 246 247 248 249 250 251 |
# File 'lib/active_record/relation/query_methods.rb', line 243 def extending(*modules) modules << Module.new(&Proc.new) if block_given? return self if modules.empty? relation = clone relation.send(:apply_modules, modules.flatten) relation end |