Sha256: 5db0f2bda724848be219cd1c9786ea834bd016a645d18bb990a015a0e2012de2

Contents?: true

Size: 939 Bytes

Versions: 35

Compression:

Stored size: 939 Bytes

Contents

# frozen_string_literal: true

module LinkedRails
  class Collection
    module Paginated
      extend ActiveSupport::Concern

      included do
        attr_accessor :page
      end

      def next
        return if page.nil? || page.to_i >= (total_page_count || 0)

        iri_with_root(root_relative_iri(page: page.to_i + 1))
      end

      def prev
        return if page.nil? || page.to_i <= 1

        iri_with_root(root_relative_iri(page: page.to_i - 1))
      end

      private

      def iri_opts
        {
          page: page
        }.merge(collection.iri_opts)
      end

      def members_query
        @members_query ||=
          prepare_members(association_base)
            .page(page)
            .per(page_size)
      end

      def prepare_members(scope)
        return super unless scope.is_a?(Array) && !scope.is_a?(Kaminari::PaginatableArray)

        Kaminari.paginate_array(super)
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
linked_rails-0.0.4.pre.g3aeec2263 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gacd5f04d4 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gb0b6aea40 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g792a1b887 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g58af47992 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g0ec6e30ca app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g9e3bcac55 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g222bfeeca app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gb254a2893 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g2c6c26e86 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.ge881247c3 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gfabf7e9f5 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g8c045be3a app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g8d7195543 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gfe77aae19 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.gc866c1806 app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g3e8f5731a app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g58e27be7f app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g96885856b app/models/linked_rails/collection/paginated.rb
linked_rails-0.0.4.pre.g1faca9643 app/models/linked_rails/collection/paginated.rb