Class: ActiveModel::PaginationSerializer

Inherits:
ArraySerializer
  • Object
show all
Defined in:
lib/active_model/pagination_serializer.rb

Instance Method Summary collapse

Instance Method Details

#initialize_with_pagination(object, opts = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/active_model/pagination_serializer.rb', line 3

def initialize_with_pagination(object, opts={})
  per_page = object.limit_value
  offset = object.offset_value
  current_page = offset ? (offset / per_page) + 1 : 1
  total_items = item_count(object)
  total_pages = per_page ? (total_items / per_page.to_f).ceil : 1
  prev_page = current_page - 1
  prev_page = nil if prev_page < 1
  next_page = current_page + 1
  next_page = nil if next_page > total_pages

  opts[:meta] ||= {}
  opts[:meta][:current_page] = current_page
  opts[:meta][:total_pages] = total_pages
  opts[:meta][:total_items] = total_items
  opts[:meta][:prev_page] = prev_page
  opts[:meta][:next_page] = next_page
  opts[:meta][:per_page] = per_page

  initialize_without_pagination(object, opts)
end