Class: RecordPaginator
- Inherits:
-
Object
- Object
- RecordPaginator
- Defined in:
- app/services/record_paginator.rb
Overview
Manages creation of links for a subset of paginated ActiveRecord objects. Depends on Kaminari having already been mixed-into ActiveRecord.
Instance Method Summary collapse
-
#initialize(params, records) ⇒ RecordPaginator
constructor
A new instance of RecordPaginator.
-
#pagination_links_for(base_link_params) ⇒ Hash<Symbol, String>
Named link parameters suitable for rendering in the UI or API.
-
#query ⇒ ActiveRecord::Relation
The original records query with which we were initialized, with Kaminari pagination applied.
Constructor Details
#initialize(params, records) ⇒ RecordPaginator
Returns a new instance of RecordPaginator
5 6 7 8 |
# File 'app/services/record_paginator.rb', line 5 def initialize(params, records) @params = params @records = records end |
Instance Method Details
#pagination_links_for(base_link_params) ⇒ Hash<Symbol, String>
Returns named link parameters suitable for rendering in the UI or API
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/services/record_paginator.rb', line 22 def pagination_links_for(base_link_params) base_page_params = { size: pagination_size } first_page = base_page_params.merge(number: 1) first_page_params = base_link_params.merge(page: first_page) links = { first: first_page_params } if query.prev_page previous_page_params = base_page_params.merge(number: query.prev_page) links[:previous] = base_link_params.merge(page: previous_page_params) end if query.next_page next_page_params = base_page_params.merge(number: query.next_page) links[:next] = base_link_params.merge(page: next_page_params) end links end |
#query ⇒ ActiveRecord::Relation
Returns the original records query with which we were initialized, with Kaminari pagination applied
11 12 13 14 15 16 17 18 |
# File 'app/services/record_paginator.rb', line 11 def query @query ||= begin records. page(pagination_number). per(pagination_size) # without_count end end |