Module: ROM::SQL::Plugin::Pagination

Defined in:
lib/rom/sql/plugin/pagination.rb

Overview

Pagination plugin for Relations

API:

  • public

Defined Under Namespace

Classes: Pager

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



112
113
114
115
116
117
118
119
120
121
122
# 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

Instance Method Details

#page(num) ⇒ Relation

Paginate a relation

Examples:

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

Returns:

API:

  • public



133
134
135
136
# 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) ⇒ Relation

Set limit for pagination

Examples:

users.per_page(10).page(2)

Returns:

API:

  • public



146
147
148
149
# 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