Module: ActiveRecord::AttributeMethods::Write
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_record/attribute_methods/write.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#write_attribute(attr_name, value) ⇒ Object
(also: #raw_write_attribute)
Updates the attribute identified by
attr_namewith the specifiedvalue.
Instance Method Details
#write_attribute(attr_name, value) ⇒ Object Also known as: raw_write_attribute
Updates the attribute identified by attr_name with the specified value. Empty strings for fixnum and float columns are turned into nil.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/active_record/attribute_methods/write.rb', line 32 def write_attribute(attr_name, value) attr_name = attr_name.to_s attr_name = self.class.primary_key if attr_name == 'id' && self.class.primary_key @attributes_cache.delete(attr_name) column = column_for_attribute(attr_name) # If we're dealing with a binary column, write the data to the cache # so we don't attempt to typecast multiple times. if column && column.binary? @attributes_cache[attr_name] = value end if column || @attributes.has_key?(attr_name) @attributes[attr_name] = type_cast_attribute_for_write(column, value) else raise ActiveModel::MissingAttributeError, "can't write unknown attribute `#{attr_name}'" end end |