Module: Elasticsearch::Model::Response::Pagination::WillPaginate
- Defined in:
 - lib/elasticsearch/model/response/pagination/will_paginate.rb
 
Overview
Allow models to be paginated with the “will_paginate” gem [github.com/mislav/will_paginate]
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #__default_per_page  ⇒ Object 
    
    
  
  
  
  
  
  
  
  private
  
    
Returns the models’s ‘per_page` value or the default.
 - 
  
    
      #current_page  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return the current page.
 - #length ⇒ Object
 - #offset ⇒ Object
 - 
  
    
      #page(num)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Pagination method.
 - 
  
    
      #paginate(options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Main pagination method.
 - 
  
    
      #per_page(num = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return or set the “size” value.
 - 
  
    
      #total_entries  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the total number of results.
 
Class Method Details
.included(base) ⇒ Object
      30 31 32 33 34 35 36 37 38  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 30 def self.included(base) base.__send__ :include, ::WillPaginate::CollectionMethods # Include the paging methods in results and records # methods = [:current_page, :offset, :length, :per_page, :total_entries, :total_pages, :previous_page, :next_page, :out_of_bounds?] Elasticsearch::Model::Response::Results.__send__ :delegate, *methods, to: :response Elasticsearch::Model::Response::Records.__send__ :delegate, *methods, to: :response end  | 
  
Instance Method Details
#__default_per_page ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the models’s ‘per_page` value or the default
      104 105 106  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 104 def __default_per_page klass.respond_to?(:per_page) && klass.per_page || ::WillPaginate.per_page end  | 
  
#current_page ⇒ Object
Return the current page
      66 67 68  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 66 def current_page search.definition[:from] / per_page + 1 if search.definition[:from] && per_page end  | 
  
#length ⇒ Object
      44 45 46  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 44 def length search.definition[:size] end  | 
  
#offset ⇒ Object
      40 41 42  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 40 def offset (current_page - 1) * per_page end  | 
  
#page(num) ⇒ Object
Pagination method
      76 77 78  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 76 def page(num) paginate(page: num, per_page: per_page) # shorthand end  | 
  
#paginate(options) ⇒ Object
Main pagination method
      54 55 56 57 58 59 60 61 62  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 54 def paginate() param_name = [:param_name] || :page page = [[param_name].to_i, 1].max per_page = ([:per_page] || __default_per_page).to_i search.definition.update size: per_page, from: (page - 1) * per_page self end  | 
  
#per_page(num = nil) ⇒ Object
Return or set the “size” value
      86 87 88 89 90 91 92  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 86 def per_page(num = nil) if num.nil? search.definition[:size] else paginate(page: current_page, per_page: num) # shorthand end end  | 
  
#total_entries ⇒ Object
Returns the total number of results
      96 97 98  | 
    
      # File 'lib/elasticsearch/model/response/pagination/will_paginate.rb', line 96 def total_entries results.total end  |