Class Mack::Database::Paginator
In: lib/mack-data_mapper/paginator.rb
Parent: Object

Methods

paginate  

Public Instance methods

Implements the paginate method from the Mack::Database::Paginator spec in mack-orm.

[Source]

    # File lib/mack-data_mapper/paginator.rb, line 7
 7:       def paginate
 8:         order_clause = [self.query_options.delete(:order)].flatten.compact
 9:           
10:         self.total_results = self.klass.count(self.query_options)
11:         self.total_pages = (self.total_results.to_f / self.results_per_page).ceil
12:         
13:         self.current_page = self.total_pages if self.current_page > self.total_pages
14:         
15:         if order_clause.empty?
16:           self.klass.key.each do |k| 
17:             order_clause << k.name.to_sym.asc
18:           end
19:         end
20: 
21:         self.query_options.reverse_merge!({
22:           :order => order_clause
23:         })
24:         
25:         offset = (self.current_page - 1) * self.results_per_page
26:         offset = 0 if offset < 0
27:         
28:         self.query_options.merge!({
29:           :limit => self.results_per_page, 
30:           :offset => offset
31:         })
32:         
33:         self.results = self.klass.all(self.query_options)
34:         self
35:       end

[Validate]