Sha256: 895369ae8ffa0063bc57ae12a275bccb35f72a37cc00a7854f23e5038ae4a44f
Contents?: true
Size: 888 Bytes
Versions: 2
Compression:
Stored size: 888 Bytes
Contents
module Paginate class Base attr_accessor :options attr_accessor :scope def initialize(scope, options = {}) @scope = scope if options.kind_of?(Hash) @options = options else @options = {page: options.to_i} end @options.reverse_merge!(Paginate.configuration.to_hash) end def collection_size @collection_size ||= options[:collection].size end def next_page? collection_size > options[:size] end def previous_page? page > 1 end def page [1, options.fetch(:page, 1).to_i].max end def offset (page - 1) * (limit - 1) end def limit [options[:size], 10].compact.first.to_i + 1 end def to_options {limit: limit, offset: offset} end def to_scope scope .limit(limit) .offset(offset) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
paginate-4.0.1 | lib/paginate/base.rb |
paginate-4.0.0 | lib/paginate/base.rb |