select should raise error when no block or no parameter is passed

This commit is contained in:
Aaron Patterson
2010-09-07 10:48:14 -07:00
parent d00f1c18eb
commit 604281221c
2 changed files with 7 additions and 3 deletions

View File

@@ -29,12 +29,12 @@ module ActiveRecord
relation
end
def select(value = nil)
def select(value = Proc.new)
if block_given?
to_a.select {|*block_args| yield(*block_args) }
to_a.select {|*block_args| value.call(*block_args) }
else
relation = clone
relation.select_values += [value] if value
relation.select_values += [value]
relation
end
end

View File

@@ -465,6 +465,10 @@ class RelationTest < ActiveRecord::TestCase
assert davids.loaded?
end
def test_select_argument_error
assert_raises(ArgumentError) { Developer.select }
end
def test_relation_merging
devs = Developer.where("salary >= 80000") & Developer.limit(2) & Developer.order('id ASC').where("id < 3")
assert_equal [developers(:david), developers(:jamis)], devs.to_a