module Believer::Extending
Public Instance Methods
apply_modules(modules)
click to toggle source
# File lib/believer/extending.rb, line 50 def apply_modules(modules) unless modules.empty? @extensions += modules modules.each {|extension| extend(extension) } end end
extending(*modules)
click to toggle source
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
# File lib/believer/extending.rb, line 40 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