From 04309aee82468fa4c4b3d92a533e84a96533f236 Mon Sep 17 00:00:00 2001 From: Matthew Draper Date: Fri, 18 Dec 2015 15:54:04 +1030 Subject: Implement limit & offset for ourselves We know the query will return exactly one row for each entry in the `ids` array, so we can do all the limit/offset calculations on that array, in advance. I also split our new ordered-ids behaviour out of the existing `find_some` method: especially with this change, the conditionals were overwhelming the actual logic. --- activerecord/test/cases/finder_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index 47059fe9e4..3c3f3284ac 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -109,7 +109,7 @@ class FinderTest < ActiveRecord::TestCase assert_equal 'The Fifth Topic of the day', records[2].title end - def test_find_with_ids_and_offset # failing with offset + def test_find_with_ids_and_offset records = Topic.offset(2).find([3,2,5,1,4]) assert_equal 3, records.size assert_equal 'The Fifth Topic of the day', records[0].title @@ -261,7 +261,7 @@ class FinderTest < ActiveRecord::TestCase assert_equal topics(:second).title, Topic.find([2]).first.title end - def test_find_by_ids_with_limit_and_offset # failing with offset + def test_find_by_ids_with_limit_and_offset assert_equal 2, Entrant.limit(2).find([1,3,2]).size entrants = Entrant.limit(3).offset(2).find([1,3,2]) assert_equal 1, entrants.size -- cgit v1.2.3