Skip to content

Commit

Permalink
Paginate per default_per_page rather than max_paginates_per by de…
Browse files Browse the repository at this point in the history
…fault

Fixes a regression reported at #813 (comment)

> Now (1.0) if we run .per with nil argument, it is trying use max_per_page instead of default_per_page
  • Loading branch information
amatsuda committed Jan 11, 2017
1 parent f387262 commit b8757b7
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
8 changes: 3 additions & 5 deletions kaminari-core/lib/kaminari/models/page_scope_methods.rb
Expand Up @@ -5,14 +5,12 @@ 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
if num.nil? && max_per_page
limit(max_per_page).offset(offset_value / limit_value * max_per_page)
elsif (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s)
@_per = num || default_per_page
if (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s)
self
elsif n.zero?
limit(n)
elsif max_per_page && max_per_page < n
elsif max_per_page && (max_per_page < n)
limit(max_per_page).offset(offset_value / limit_value * max_per_page)
else
limit(n).offset(offset_value / limit_value * n)
Expand Down
10 changes: 10 additions & 0 deletions kaminari-core/test/models/active_record/scopes_test.rb
Expand Up @@ -97,6 +97,16 @@ def shutdown
assert_equal model_class.default_per_page, model_class.page(1).per(nil).count
end

test 'page 1 per nil with max_per_page > default_per_page' do
begin
model_class.max_paginates_per(30)

assert_equal 25, model_class.page(1).per(nil).count
ensure
model_class.max_paginates_per(nil)
end
end

test 'page 1 per nil with max_per_page < default_per_page' do
begin
model_class.max_paginates_per(10)
Expand Down

0 comments on commit b8757b7

Please sign in to comment.