aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/base.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/base.rb')
-rwxr-xr-xactiverecord/lib/active_record/base.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 54f3a8252d..b838b1cdc0 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1032,16 +1032,18 @@ module ActiveRecord #:nodoc:
result = find_every(options)
- # If the user passes in a limit to find(), we need to check
- # to see if the result is limited before just checking the
- # size of the results.
+ # Determine expected size from limit and offset, not just ids.size.
expected_size =
if options[:limit] && ids.size > options[:limit]
options[:limit]
else
ids.size
end
- expected_size -= options[:offset] if options[:offset]
+
+ # 11 ids with limit 3, offset 9 should give 2 results.
+ if options[:offset] && (ids.size - options[:offset] < expected_size)
+ expected_size = ids.size - options[:offset]
+ end
if result.size == expected_size
result