Class: Might::Paginator

Inherits:
Object
  • Object
show all
Defined in:
lib/might/paginator.rb

Overview

Paginates ActiveRecord scopes As a side effect of pagination it defines the following methods on collection:

collection#limit
collection#offset
collection#count
collection#total_count

Examples:


Paginator.new(limit: 10, offset: 100).paginate(Movie.all)

Constant Summary collapse

InvalidLimitOrOffset =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Paginator

Returns a new instance of Paginator.

Parameters:

  • params ({Symbol => Integer})


23
24
25
26
27
28
# File 'lib/might/paginator.rb', line 23

def initialize(options = {})
  @limit = Integer(options.fetch(:limit))
  @offset = Integer(options.fetch(:offset))

  fail InvalidLimitOrOffset if @limit < 0 || @offset < 0
end

Instance Attribute Details

#limitObject (readonly)

Returns the value of attribute limit.



17
18
19
# File 'lib/might/paginator.rb', line 17

def limit
  @limit
end

#offsetObject (readonly)

Returns the value of attribute offset.



17
18
19
# File 'lib/might/paginator.rb', line 17

def offset
  @offset
end

Instance Method Details

#paginate(collection) ⇒ ActiveRecord::CollectionProxy

Paginate given collection

Parameters:

  • collection (ActiveRecord::CollectionProxy, ActiveRecord::Base)

Returns:

  • (ActiveRecord::CollectionProxy)


34
35
36
# File 'lib/might/paginator.rb', line 34

def paginate(collection)
  collection.offset(offset).limit(limit)
end