class TheGrid::Api::Command::Paginate
Public Instance Methods
calculate_max_page_for(relation, params)
click to toggle source
# File lib/the_grid/api/command/paginate.rb, line 20 def calculate_max_page_for(relation, params) params = configure(relation, params) total_count = params[:size].present? ? params[:size] : relation.except(:limit, :offset, :includes).count (total_count / params[:per_page].to_f).ceil end
configure(relation, params)
click to toggle source
# File lib/the_grid/api/command/paginate.rb, line 5 def configure(relation, params) {}.tap do |o| o[:page] = params[:page].to_i o[:page] = 1 if o[:page] <= 0 o[:size] = params[:size] o[:per_page] = params[:per_page].to_i o[:per_page] = self.class.default_per_page if o[:per_page] <= 0 end end
contextualize(relation, params)
click to toggle source
# File lib/the_grid/api/command/paginate.rb, line 26 def contextualize(relation, params) {:max_page => calculate_max_page_for(relation, params)} end
run_on(relation, params)
click to toggle source
# File lib/the_grid/api/command/paginate.rb, line 16 def run_on(relation, params) relation.offset((params[:page] - 1) * params[:per_page]).limit(params[:per_page]) end