aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorSam <sam.saffron@gmail.com>2014-11-19 08:44:45 +1100
committerSam <sam.saffron@gmail.com>2014-11-20 10:43:37 +1100
commita668b09ee387bf241a3481a764a18a5c8a4df8cd (patch)
tree34649db90684533f6ebdabe7ea7531d6a9900561 /activerecord
parent9aa2b2d7bf52c0f3974090cd033341be2edeae6d (diff)
downloadrails-a668b09ee387bf241a3481a764a18a5c8a4df8cd.tar.gz
rails-a668b09ee387bf241a3481a764a18a5c8a4df8cd.tar.bz2
rails-a668b09ee387bf241a3481a764a18a5c8a4df8cd.zip
PERF: avoid string allocations
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index cb4e33f1b1..eb69943551 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -1059,8 +1059,13 @@ module ActiveRecord
def build_select(arel, selects)
if !selects.empty?
expanded_select = selects.map do |field|
- columns_hash.key?(field.to_s) ? arel_table[field] : field
+ if (Symbol === field || String === field) && columns_hash.key?(field.to_s)
+ arel_table[field]
+ else
+ field
+ end
end
+
arel.project(*expanded_select)
else
arel.project(@klass.arel_table[Arel.star])