module ActiveRecord::AttributeMethods::Write
Constants
- WriterMethodCache
Public Instance Methods
raw_write_attribute(attr_name, value)
click to toggle source
# File lib/active_record/attribute_methods/write.rb, line 61 def raw_write_attribute(attr_name, value) write_attribute_with_type_cast(attr_name, value, :raw_type_cast_attribute_for_write) end
write_attribute(attr_name, value)
click to toggle source
Updates the attribute identified by attr_name
with the
specified value
. Empty strings for fixnum and float columns
are turned into nil
.
# File lib/active_record/attribute_methods/write.rb, line 57 def write_attribute(attr_name, value) write_attribute_with_type_cast(attr_name, value, :type_cast_attribute_for_write) end
Private Instance Methods
attribute=(attribute_name, value)
click to toggle source
Handle *= for method_missing.
# File lib/active_record/attribute_methods/write.rb, line 67 def attribute=(attribute_name, value) write_attribute(attribute_name, value) end
type_cast_attribute_for_write(column, value)
click to toggle source
# File lib/active_record/attribute_methods/write.rb, line 71 def type_cast_attribute_for_write(column, value) return value unless column column.type_cast_for_write value end
Also aliased as: raw_type_cast_attribute_for_write
write_attribute_with_type_cast(attr_name, value, type_cast_method)
click to toggle source
# File lib/active_record/attribute_methods/write.rb, line 78 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 @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] = send(type_cast_method, column, value) else raise ActiveModel::MissingAttributeError, "can't write unknown attribute `#{attr_name}'" end end