aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/model_schema.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-06-17 15:39:13 -0600
committerSean Griffin <sean@thoughtbot.com>2014-06-17 16:02:53 -0600
commit4d3e88fc757a1b6f6c468418af01dca677e41edf (patch)
tree82e1d7dc1267da9f65cdd9915459a508324e4bb3 /activerecord/lib/active_record/model_schema.rb
parent9f86780226c86fae30d59d04bd53449b8c7a1ad8 (diff)
downloadrails-4d3e88fc757a1b6f6c468418af01dca677e41edf.tar.gz
rails-4d3e88fc757a1b6f6c468418af01dca677e41edf.tar.bz2
rails-4d3e88fc757a1b6f6c468418af01dca677e41edf.zip
Don't type cast the default on the column
If we want to have type decorators mess with the attribute, but not the column, we need to stop type casting on the column. Where possible, we changed the tests to test the value of `column_defaults`, which is public API. `Column#default` is not.
Diffstat (limited to 'activerecord/lib/active_record/model_schema.rb')
-rw-r--r--activerecord/lib/active_record/model_schema.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb
index b9558b0752..fad7eae461 100644
--- a/activerecord/lib/active_record/model_schema.rb
+++ b/activerecord/lib/active_record/model_schema.rb
@@ -230,14 +230,16 @@ module ActiveRecord
# Returns a hash where the keys are column names and the values are
# default values when instantiating the AR object for this table.
def column_defaults
- @column_defaults ||= Hash[columns.map { |c| [c.name, c.default] }]
+ @column_defaults ||= Hash[columns_hash.map { |name, column|
+ [name, column.type_cast_from_database(column.default)]
+ }]
end
# Returns a hash where the keys are the column names and the values
# are the default values suitable for use in `@raw_attriubtes`
def raw_column_defaults # :nodoc:
- @raw_column_defauts ||= Hash[column_defaults.map { |name, default|
- [name, columns_hash[name].type_cast_for_database(default)]
+ @raw_column_defaults ||= Hash[columns_hash.map { |name, column|
+ [name, column.default]
}]
end
@@ -285,7 +287,7 @@ module ActiveRecord
@arel_engine = nil
@column_defaults = nil
- @raw_column_defauts = nil
+ @raw_column_defaults = nil
@column_names = nil
@column_types = nil
@content_columns = nil