From d2040a2c02456c1890025acf4a460d82a8653373 Mon Sep 17 00:00:00 2001 From: Neeraj Singh Date: Fri, 18 Jun 2010 16:30:19 -0400 Subject: [PATCH] wip --- .../lib/active_record/relation/query_methods.rb | 8 +++++++- activerecord/test/cases/relations_test.rb | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 7a48a65..b3dd2db 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -186,8 +186,14 @@ module ActiveRecord if selects.present? selects.each do |s| @implicit_readonly = false - arel = arel.project(s) if s.present? end + + last = selects.last + arel = if last.is_a?(Arel::Expression) || (last.is_a?(String) && last.downcase[0,5] =~ /count/) # to handle postgresql + arel.project(selects.last) + else + arel.project(*selects) + end else arel = arel.project(quoted_table_name + '.*') end diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index 43519db..fa34cbb 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -469,6 +469,12 @@ class RelationTest < ActiveRecord::TestCase assert_equal 0, posts.count('comments_count') end + def test_multiple_selects + post = Post.scoped.select('comments_count').select('title').order('id').first + assert_equal "Welcome to the weblog", post.title + assert_equal 2, post.comments_count + end + def test_size posts = Post.scoped -- 1.6.5.2