diff --git a/lib/squeel/adapters/active_record/relation_extensions.rb b/lib/squeel/adapters/active_record/relation_extensions.rb index 1f1fd4a..930abe3 100644 --- a/lib/squeel/adapters/active_record/relation_extensions.rb +++ b/lib/squeel/adapters/active_record/relation_extensions.rb @@ -178,13 +178,13 @@ def eager_load(*args) end end - def select(value = Proc.new) - if block_given? && Proc === value - if value.arity > 0 || (Squeel.sane_arity? && value.arity < 0) - to_a.select {|*block_args| value.call(*block_args)} + def select(*args, &block) + if block_given? && Proc === block + if block.arity > 0 || (Squeel.sane_arity? && block.arity < 0) + to_a.select {|*block_args| block.call(*block_args)} else relation = clone - relation.select_values += Array.wrap(DSL.eval &value) + relation.select_values += Array.wrap(DSL.eval &block) relation end else diff --git a/spec/squeel/adapters/active_record/relation_extensions_spec.rb b/spec/squeel/adapters/active_record/relation_extensions_spec.rb index 48de1d6..1abbc26 100644 --- a/spec/squeel/adapters/active_record/relation_extensions_spec.rb +++ b/spec/squeel/adapters/active_record/relation_extensions_spec.rb @@ -496,6 +496,9 @@ module ActiveRecord aric.last_article_id.to_i.should eq Article.where(:person_id => 1).last.id end + it 'works with multiple arguments in select' do + Article.select("title", "body").size.should eq 31 + end end describe '#count' do