Module: Her::Kaminari::Collection::ClassMethods

Defined in:
lib/her/kaminari/collection.rb

Instance Method Summary collapse

Instance Method Details

#new_collection(parsed_data) ⇒ Kaminari::PaginatableArray

Creates a new paginated collection from API data. This method makes the assumption the collection was already paginated by the API.

Returns:

  • (Kaminari::PaginatableArray)

    a paginated collection



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/her/kaminari/collection.rb', line 26

def new_collection(parsed_data)
  collection = super(parsed_data)
  pagination = parsed_data[:pagination]
  collection = ::Kaminari::PaginatableArray.new(
    collection,
    total_count: pagination[:total_count],
    limit: pagination[:per_page]
  ).tap do |array|
    array.extend ::Kaminari::PageScopeMethods
    array.singleton_class.class_eval do

      # @return [Integer] our API page number
      define_method :current_page do
        pagination[:page]
      end

      # @return [Integer] our API offset number
      define_method :offset_value do
        pagination[:offset]
      end

    end
  end
  collection
end