class Greedo::Paginator

Attributes

order[R]
order_by[R]
page[R]
per_page[R]
scope[R]

Public Class Methods

build(scope, page: 1, per_page: 20, order_by: nil) click to toggle source
# File lib/greedo/paginator.rb, line 8
def self.build(scope,
               page: 1,
               per_page: 20,
               order_by: nil)
  return ArrayPaginator.new(scope, order_by.order, order_by.sort) if scope.is_a?(Array)
  Paginator.new(scope, page: page, per_page: per_page,
                order: order_by.order, order_by: order_by.sort)
end
new(scope, page:, per_page:, order: nil, order_by: nil) click to toggle source
# File lib/greedo/paginator.rb, line 17
def initialize(scope, page:, per_page:, order: nil, order_by: nil)
  @scope = scope
  @page = page
  @per_page = per_page
  @order = order
  @order_by = order_by
end

Public Instance Methods

records() click to toggle source
# File lib/greedo/paginator.rb, line 25
def records
  paginated = scope.paginate(page: page, per_page: per_page)
  order_by_fields = [order_by].flatten.map { |field| "#{field} #{order}" }.join(", ")
  order_by ? paginated.reorder(order_by_fields) : paginated
end
show?() click to toggle source
# File lib/greedo/paginator.rb, line 31
def show?
  scope.length > per_page
end