aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-06-11 11:23:26 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-06-11 11:23:26 -0300
commitea3455d81b9d4aa9f52bb98d81020a5f36330f1c (patch)
tree006a4640117c62f8d1db167da1d39b022a6a45eb /activerecord
parent08edb3ddb15be64f1e65f74402694417b961e612 (diff)
parent09dd29e4f775ef398bb9031dddebe6b84a7155b6 (diff)
downloadrails-ea3455d81b9d4aa9f52bb98d81020a5f36330f1c.tar.gz
rails-ea3455d81b9d4aa9f52bb98d81020a5f36330f1c.tar.bz2
rails-ea3455d81b9d4aa9f52bb98d81020a5f36330f1c.zip
Merge pull request #15638 from sgrif/sg-column-types
Ensure `column_types` returns a type object, and not a column
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/model_schema.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb
index f96f77f696..9e1afd32e6 100644
--- a/activerecord/lib/active_record/model_schema.rb
+++ b/activerecord/lib/active_record/model_schema.rb
@@ -220,25 +220,25 @@ module ActiveRecord
end
def column_types # :nodoc:
- @column_types ||= decorate_columns(columns_hash.dup)
+ @column_types ||= decorate_types(build_types_hash)
end
def type_for_attribute(attr_name) # :nodoc:
- column_types.fetch(attr_name) { column_for_attribute(attr_name) }
+ column_types.fetch(attr_name) { Type::Value.new }
end
- def decorate_columns(columns_hash) # :nodoc:
- return if columns_hash.empty?
+ def decorate_types(types) # :nodoc:
+ return if types.empty?
@time_zone_column_names ||= self.columns_hash.find_all do |name, col|
create_time_zone_conversion_attribute?(name, col)
end.map!(&:first)
@time_zone_column_names.each do |name|
- columns_hash[name] = AttributeMethods::TimeZoneConversion::Type.new(columns_hash[name])
+ types[name] = AttributeMethods::TimeZoneConversion::Type.new(types[name])
end
- columns_hash
+ types
end
# Returns a hash where the keys are column names and the values are
@@ -335,6 +335,10 @@ module ActiveRecord
base.table_name
end
end
+
+ def build_types_hash
+ Hash[columns.map { |column| [column.name, column.cast_type] }]
+ end
end
end
end