1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Ensure column_types returns a type object, and not a column

This commit is contained in:
Sean Griffin 2014-06-11 07:54:39 -06:00
parent ef4e0787d7
commit 09dd29e4f7

View file

@ -220,25 +220,25 @@ module ActiveRecord
end end
def column_types # :nodoc: def column_types # :nodoc:
@column_types ||= decorate_columns(columns_hash.dup) @column_types ||= decorate_types(build_types_hash)
end end
def type_for_attribute(attr_name) # :nodoc: 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 end
def decorate_columns(columns_hash) # :nodoc: def decorate_types(types) # :nodoc:
return if columns_hash.empty? return if types.empty?
@time_zone_column_names ||= self.columns_hash.find_all do |name, col| @time_zone_column_names ||= self.columns_hash.find_all do |name, col|
create_time_zone_conversion_attribute?(name, col) create_time_zone_conversion_attribute?(name, col)
end.map!(&:first) end.map!(&:first)
@time_zone_column_names.each do |name| @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 end
columns_hash types
end end
# Returns a hash where the keys are column names and the values are # Returns a hash where the keys are column names and the values are
@ -335,6 +335,10 @@ module ActiveRecord
base.table_name base.table_name
end end
end end
def build_types_hash
Hash[columns.map { |column| [column.name, column.cast_type] }]
end
end end
end end
end end