Sha256: 8e61a42cf5d0b1d9986f89d574367c12e168665179b14c5ba03afbf5e3b86cd9

Contents?: true

Size: 1.08 KB

Versions: 14

Compression:

Stored size: 1.08 KB

Contents

module Kaminari
  module ActiveRecord
    extend ActiveSupport::Concern
    PER_PAGE = 25

    included do
      def self.inherited(kls)
        # TERRIBLE HORRIBLE NO GOOD VERY BAD HACK: inheritable_attributes is not yet set here on AR 3.0
        unless kls.default_scoping
          new_inheritable_attributes = Hash[inheritable_attributes.map do |key, value|
            [key, value.duplicable? ? value.dup : value]
          end]
          kls.instance_variable_set('@inheritable_attributes', new_inheritable_attributes)
        end
        kls.class_eval do
          # page(5)
          scope :page, lambda {|num|
            offset(PER_PAGE * ([num.to_i, 1].max - 1)).limit(PER_PAGE)
          } do
            # page(3).per(10)
            def per(num)
              offset(offset_value / limit_value * num).limit(num)
            end

            def num_pages
              (except(:offset, :limit).count.to_f / limit_value).ceil
            end

            def current_page
              (offset_value / limit_value) + 1
            end
          end
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
kaminari-0.9.4 lib/kaminari/active_record.rb
kaminari-0.9.3 lib/kaminari/active_record.rb
kaminari-0.9.2 lib/kaminari/active_record.rb
kaminari-0.9.1 lib/kaminari/active_record.rb
kaminari-0.9.0 lib/kaminari/active_record.rb
kaminari-0.8.0 lib/kaminari/active_record.rb
kaminari-0.7.0 lib/kaminari/active_record.rb
kaminari-0.6.1 lib/kaminari/active_record.rb
kaminari-0.6.0 lib/kaminari/active_record.rb
kaminari-0.5.0 lib/kaminari/active_record.rb
kaminari-0.4.0 lib/kaminari/active_record.rb
kaminari-0.3.0 lib/kaminari/active_record.rb
kaminari-0.2.1 lib/kaminari/active_record.rb
kaminari-0.2.0 lib/kaminari/active_record.rb