Module: Avarteq::Paginator::ClassMethods

Defined in:
lib/acts_as_paginable.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_paginable(options = {}) ⇒ Object

options[:scopes]

List with paginable scopes



14
15
16
17
18
19
20
21
22
# File 'lib/acts_as_paginable.rb', line 14

def acts_as_paginable(options = {})

  # Accessors for class (static) variables
  cattr_accessor :paginable_scopes, :paginable_scope_prefix, :paginable_params_suffix

  self.paginable_scopes         = options[:scopes] || []
  self.paginable_scope_prefix   = options[:scope_prefix] || "scoped_by_"
  self.paginable_params_suffix  = options[:params_suffix] || ""
end

#atq_paginate(params, per_page) ⇒ Object

Chains scopes as given by params and returns the paginated result.



25
26
27
28
# File 'lib/acts_as_paginable.rb', line 25

def atq_paginate(params, per_page)
  result = chain_scopes(params, per_page)
  result.paginate(:page => params[:page], :per_page => per_page)
end

#chain_scopes(params, per_page) ⇒ Object

Chains scopes as given by params but does not invoke paginate.



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/acts_as_paginable.rb', line 31

def chain_scopes(params, per_page)
  result = self
  self.paginable_scopes.each do |scope_name|
    param_name = scope_name.to_s + self.paginable_params_suffix.to_s          
    if params[param_name] && !params[param_name].empty? then
      args    = params[param_name]
      scope   = (self.paginable_scope_prefix + scope_name.to_s ).to_sym
      result  = result.send(scope, args)
    end
  end
  result = result.order(params[:order]) if params[:order] && !params[:order].empty?
  result
end