aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAndrew White <pixeltrix@users.noreply.github.com>2017-02-26 22:34:42 +0000
committerGitHub <noreply@github.com>2017-02-26 22:34:42 +0000
commit385799a4a3a361ed2d27a5e72e884f1b7d82f096 (patch)
treeb9b0c0de9374cea368a71cadbf46c1d8a44cff95 /activerecord
parentb10f601e9b8e8b0a5f40e2f839bfde5e7220a44b (diff)
parent84f4ab90dabbe23db0cd6f74078da6d341401d10 (diff)
downloadrails-385799a4a3a361ed2d27a5e72e884f1b7d82f096.tar.gz
rails-385799a4a3a361ed2d27a5e72e884f1b7d82f096.tar.bz2
rails-385799a4a3a361ed2d27a5e72e884f1b7d82f096.zip
Merge pull request #25274 from kamipo/fix_find_nth_with_limit_value
Fix `find_nth` with `limit_value`
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/relation/finder_methods.rb10
-rw-r--r--activerecord/test/cases/finder_test.rb6
2 files changed, 10 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index 6412c7b22e..5d24f5f5ca 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -147,7 +147,7 @@ module ActiveRecord
def last(limit = nil)
return find_last(limit) if loaded? || limit_value
- result = limit(limit || 1)
+ result = limit(limit)
result.order!(arel_attribute(primary_key)) if order_values.empty? && primary_key
result = result.reverse_order!
@@ -536,8 +536,12 @@ module ActiveRecord
self
end
- relation = relation.offset(offset_index + index) unless index.zero?
- relation.limit(limit).to_a
+ if limit_value.nil? || index < limit_value
+ relation = relation.offset(offset_index + index) unless index.zero?
+ relation.limit(limit).to_a
+ else
+ []
+ end
end
end
diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb
index deec669935..89d8a8bdca 100644
--- a/activerecord/test/cases/finder_test.rb
+++ b/activerecord/test/cases/finder_test.rb
@@ -497,7 +497,7 @@ class FinderTest < ActiveRecord::TestCase
assert_nil Topic.offset(5).second_to_last
#test with limit
- # assert_nil Topic.limit(1).second # TODO: currently failing
+ assert_nil Topic.limit(1).second
assert_nil Topic.limit(1).second_to_last
end
@@ -526,9 +526,9 @@ class FinderTest < ActiveRecord::TestCase
assert_nil Topic.offset(5).third_to_last
# test with limit
- # assert_nil Topic.limit(1).third # TODO: currently failing
+ assert_nil Topic.limit(1).third
assert_nil Topic.limit(1).third_to_last
- # assert_nil Topic.limit(2).third # TODO: currently failing
+ assert_nil Topic.limit(2).third
assert_nil Topic.limit(2).third_to_last
end