diff --git a/kaminari-core/lib/kaminari/models/page_scope_methods.rb b/kaminari-core/lib/kaminari/models/page_scope_methods.rb index 1c2cce38f..bca103d1f 100644 --- a/kaminari-core/lib/kaminari/models/page_scope_methods.rb +++ b/kaminari-core/lib/kaminari/models/page_scope_methods.rb @@ -5,7 +5,7 @@ module PageScopeMethods # Model.page(3).per(10) def per(num, max_per_page: nil) max_per_page ||= ((defined?(@_max_per_page) && @_max_per_page) || self.max_per_page) - @_per = num || default_per_page + @_per = (num || default_per_page).to_i if (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s) self elsif n.zero? diff --git a/kaminari-core/test/models/active_record/active_record_relation_methods_test.rb b/kaminari-core/test/models/active_record/active_record_relation_methods_test.rb index b17a8a9af..e9b8fc21a 100644 --- a/kaminari-core/test/models/active_record/active_record_relation_methods_test.rb +++ b/kaminari-core/test/models/active_record/active_record_relation_methods_test.rb @@ -84,6 +84,10 @@ class ActiveRecordRelationMethodsTest < ActiveSupport::TestCase test "throw an exception when calculating total_count when the query includes column aliases used by a group-by clause" do assert_equal 3, Book.joins(authorships: :user).select("users.name as author_name").group('users.name').page(1).total_count end + + test 'total_count is calculable with page 1 per "5" (the string)' do + assert_equal 7, User.page(1).per('5').load.total_count + end end end end