module ROM::SQL::Plugin::Pagination

Pagination plugin for Relations

@api public

Public Class Methods

included(klass) click to toggle source

@api private

Calls superclass method
# File lib/rom/sql/plugin/pagination.rb, line 112
def self.included(klass)
  super

  klass.class_eval do
    defines :per_page

    option :pager, default: -> {
      Pager.new(dataset, per_page: self.class.per_page)
    }
  end
end

Public Instance Methods

page(num) click to toggle source

Paginate a relation

@example

users.page(1)
users.pager # => info about pagination

@return [Relation]

@api public

# File lib/rom/sql/plugin/pagination.rb, line 133
def page(num)
  next_pager = pager.at(dataset, num)
  new(next_pager.dataset, pager: next_pager)
end
per_page(num) click to toggle source

Set limit for pagination

@example

users.per_page(10).page(2)

@return [Relation]

@api public

# File lib/rom/sql/plugin/pagination.rb, line 146
def per_page(num)
  next_pager = pager.at(dataset, pager.current_page, num)
  new(next_pager.dataset, pager: next_pager)
end