Sha256: b8129390ac860678ed41b14e3bae209ed29f6a738a41c1d9406b2af419e4e6c4

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

require 'active_support/core_ext'

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].blank? and opts[:page].blank? and opts[:offset].blank?

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

        if opts[:page].blank?
          offset = (opts[:offset] || 0)
        else
          if page > 1
            offset = (page - 1) * limit
          else
            offset = 0
          end
        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.2.0 lib/mongoid/pagination.rb