aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-01-10 04:59:33 +0900
committerGitHub <noreply@github.com>2018-01-10 04:59:33 +0900
commitd7d6921540d5cd45d5925db3b632f3a7e122ab5c (patch)
treee7ad826119d2287abb31d56e13787c10a4656a64 /activerecord/lib
parent33721a71e39d5a228ae3cd7949fa83198dc3eaa9 (diff)
parentb75a67cdef06cbf0a5a4feb1be9c74f31b89b28a (diff)
downloadrails-d7d6921540d5cd45d5925db3b632f3a7e122ab5c.tar.gz
rails-d7d6921540d5cd45d5925db3b632f3a7e122ab5c.tar.bz2
rails-d7d6921540d5cd45d5925db3b632f3a7e122ab5c.zip
Merge pull request #27597 from brchristian/first_last_parity
Consistency between first() and last() with limit
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/relation/finder_methods.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index e61cacf6a7..50d0f14b98 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -532,7 +532,11 @@ module ActiveRecord
else
relation = ordered_relation
- if limit_value.nil? || index < limit_value
+ if limit_value
+ limit = [limit_value - index, limit].min
+ end
+
+ if limit > 0
relation = relation.offset(offset_index + index) unless index.zero?
relation.limit(limit).to_a
else