class PaginatedSerializer::Serializer

Attributes

collection[RW]

Public Class Methods

new(collection) click to toggle source
# File lib/paginated_serializer/serializer.rb, line 8
def initialize(collection)
  @collection = collection
end

Public Instance Methods

to_json() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 12
def to_json
  {
    per_page: per_page,
    total: total,
    total_pages: total_pages,
    last_page: last_page,
    current_page: current_page,
    first_page: first_page,
    next_page: next_page,
    previous_page: previous_page
  }.merge(collection_json)
end

Private Instance Methods

collection_json() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 63
def collection_json
  klass = collection.first.class.name
  key = klass.pluralize.underscore.to_sym
  serializer = "#{klass}Serializer".constantize
  { key => ActiveModel::ArraySerializer.new(collection, each_serializer: serializer).as_json }
end
current_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 43
def current_page
  collection.current_page
end
first_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 47
def first_page
  1
end
last_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 39
def last_page
  collection.total_pages
end
next_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 51
def next_page
  if total_pages > current_page
    collection.current_page + 1
  end
end
per_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 27
def per_page
  Kaminari.config.default_per_page
end
previous_page() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 57
def previous_page
  if current_page > 1
    collection.current_page - 1
  end
end
total() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 31
def total
  collection.total_count
end
total_pages() click to toggle source
# File lib/paginated_serializer/serializer.rb, line 35
def total_pages
  collection.total_pages
end