diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-05-29 13:34:23 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-05-29 13:34:47 -0700 |
commit | 912904caee1e037e2f71d6ede35a3758c15f276d (patch) | |
tree | 2384c2a13db76ae767f96e114870178fb93debb1 /activerecord/lib/active_record/attribute_methods/write.rb | |
parent | 214423f40171bf7d3165d70507ab17803b2fbf07 (diff) | |
download | rails-912904caee1e037e2f71d6ede35a3758c15f276d.tar.gz rails-912904caee1e037e2f71d6ede35a3758c15f276d.tar.bz2 rails-912904caee1e037e2f71d6ede35a3758c15f276d.zip |
Move `type_cast_for_write` behavior over to the serialized type object
Diffstat (limited to 'activerecord/lib/active_record/attribute_methods/write.rb')
-rw-r--r-- | activerecord/lib/active_record/attribute_methods/write.rb | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/write.rb b/activerecord/lib/active_record/attribute_methods/write.rb index 56441d7324..d552bea8c4 100644 --- a/activerecord/lib/active_record/attribute_methods/write.rb +++ b/activerecord/lib/active_record/attribute_methods/write.rb @@ -55,11 +55,11 @@ module ActiveRecord # specified +value+. Empty strings for fixnum and float columns are # turned into +nil+. def write_attribute(attr_name, value) - write_attribute_with_type_cast(attr_name, value, :type_cast_attribute_for_write) + write_attribute_with_type_cast(attr_name, value, :type_cast_for_write) end def raw_write_attribute(attr_name, value) - write_attribute_with_type_cast(attr_name, value, :raw_type_cast_attribute_for_write) + write_attribute_with_type_cast(attr_name, value, :raw_type_cast_for_write) end private @@ -68,13 +68,6 @@ module ActiveRecord write_attribute(attribute_name, value) end - def type_cast_attribute_for_write(column, value) - return value unless column - - column.type_cast_for_write value - end - alias_method :raw_type_cast_attribute_for_write, :type_cast_attribute_for_write - def write_attribute_with_type_cast(attr_name, value, type_cast_method) attr_name = attr_name.to_s attr_name = self.class.primary_key if attr_name == 'id' && self.class.primary_key @@ -87,8 +80,10 @@ module ActiveRecord @attributes_cache[attr_name] = value end - if column || @attributes.has_key?(attr_name) - @attributes[attr_name] = send(type_cast_method, column, value) + if column + @attributes[attr_name] = column.public_send(type_cast_method, value) + elsif @attributes.has_key?(attr_name) + @attributes[attr_name] = value else raise ActiveModel::MissingAttributeError, "can't write unknown attribute `#{attr_name}'" end |