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

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

Overview

Pagination plugin for Relations

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.



110
111
112
113
114
115
116
117
118
119
120
# File 'lib/rom/sql/plugin/pagination.rb', line 110

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:



131
132
133
134
# File 'lib/rom/sql/plugin/pagination.rb', line 131

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:



144
145
146
147
# File 'lib/rom/sql/plugin/pagination.rb', line 144

def per_page(num)
  next_pager = pager.at(dataset, pager.current_page, num)
  new(next_pager.dataset, pager: next_pager)
end