From 739f12ed16d1c5ceb8fcdf0b30789905282096ff Mon Sep 17 00:00:00 2001 From: Rizwan Reza Date: Sat, 15 May 2010 20:01:21 +0430 Subject: [PATCH] Allow Ranges in finder. --- .../lib/active_record/relation/finder_methods.rb | 2 +- activerecord/test/cases/finder_test.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 7a0c9dc..f52fe7e 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -265,7 +265,7 @@ module ActiveRecord expects_array = ids.first.kind_of?(Array) return ids.first if expects_array && ids.first.empty? - ids = ids.flatten.compact.uniq + ids = ids.inject([]) {|m, o| m << (o.kind_of?(Range) ? o.to_a : o)}.flatten.compact.uniq case ids.size when 0 diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index e78db89..52b8c3d 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -147,6 +147,11 @@ class FinderTest < ActiveRecord::TestCase assert_equal 2, last_devs.size end + def test_find_by_range + assert_equal 4, Account.find(3..6).size + assert_equal 5, Account.find(1, 3..6).size + end + def test_find_an_empty_array assert_equal [], Topic.find([]) end -- 1.6.5.2