diff options
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 7 | ||||
-rw-r--r-- | activerecord/test/cases/base_test.rb | 3 |
2 files changed, 4 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index e75ff6fd69..48a7d15ea8 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -459,11 +459,8 @@ module ActiveRecord end if result.size == expected_size - # result - records_by_id = result.each_with_object(Hash.new) do |record, by_id| - by_id[record.id] = record - end - ids.first(expected_size).collect { |id| records_by_id[id] } + records_by_id = result.index_by(&:id) + ids.first(expected_size).collect { |id| records_by_id[id.to_i] } else raise_record_not_found_exception!(ids, result.size, expected_size) end diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index 31c31e4329..9c62bbc7bd 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -521,7 +521,8 @@ class BasicsTest < ActiveRecord::TestCase end def test_find_by_slug_with_array - assert_equal Topic.find(['1-meowmeow', '2-hello']), Topic.find([1, 2]) + assert_equal Topic.find([1, 2]), Topic.find(['1-meowmeow', '2-hello']) + assert_equal 'The Second Topic of the day', Topic.find(['2-hello', '1-meowmeow']).first.title end def test_find_by_slug_with_range |