From 7b6d3f9f5ee73f752732c987066a91360578afa2 Mon Sep 17 00:00:00 2001 From: sineed Date: Wed, 24 Sep 2014 15:07:59 +0400 Subject: [PATCH] `select` method must accept multiple arguments like in native version --- .../adapters/active_record/relation_extensions.rb | 10 +++++----- .../adapters/active_record/relation_extensions_spec.rb | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) 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