Sha256: 2a911213f4fcdf1e5a0cbbc6386e9820d02c5dba6036c6c3125d5a13c44df6cf

Contents?: true

Size: 871 Bytes

Versions: 1

Compression:

Stored size: 871 Bytes

Contents

module Mongoid
  module Pagination
    extend ActiveSupport::Concern

    module ClassMethods

      # Paginate the results
      #
      # @param [Hash] opts
      # @option [Integer] :page (default: 1)
      # @option [Integer] :limit (default: 25)
      #
      # @return [Mongoid::Criteria]
      def paginate(opts = {})
        return criteria if opts[:limit].nil? and opts[:page].nil?

        limit = (opts[:limit] || 25).to_i
        page  = (opts[:page]  || 1).to_i

        if page > 1
          offset = (page - 1) * limit
        else
          offset = 0
        end

        per_page(limit).offset(offset)
      end

      # Limit the result set
      #
      # @param [Integer] page_limit the max number of results to return
      # @return [Mongoid::Criteria]
      def per_page(page_limit = 25)
        limit(page_limit.to_i)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-pagination-0.1.0 lib/mongoid/pagination.rb