aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/calculations.rb
diff options
context:
space:
mode:
authorErich Menge <erich.menge@me.com>2012-05-15 19:51:27 -0500
committerErich Menge <erich.menge@me.com>2012-05-16 12:02:02 -0500
commitc90f16da626a7edac45f7027b127ad874619455a (patch)
treeef6e0729f1f6657dbc3c7789ae2293c5c6cc61f2 /activerecord/lib/active_record/relation/calculations.rb
parent7994496ab4127cf15323563acd55170b9d35821a (diff)
downloadrails-c90f16da626a7edac45f7027b127ad874619455a.tar.gz
rails-c90f16da626a7edac45f7027b127ad874619455a.tar.bz2
rails-c90f16da626a7edac45f7027b127ad874619455a.zip
Fixes issue where SQL fragments prevented type casting based on column type.
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb11
1 files changed, 3 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index aa2f325f74..862009b1ba 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -147,17 +147,12 @@ module ActiveRecord
end
result = klass.connection.select_all(select(column_name).arel, nil, bind_values)
- types = result.column_types.merge klass.column_types
- column = types[key]
+ column = klass.column_types[key] || result.column_types.values.first
result.map do |attributes|
raise ArgumentError, "Pluck expects to select just one attribute: #{attributes.inspect}" unless attributes.one?
- value = klass.initialize_attributes(attributes).first[1]
- if column
- column.type_cast value
- else
- value
- end
+ value = klass.initialize_attributes(attributes).values.first
+ column ? column.type_cast(value) : value
end
end