module ActiveRecord::AttributeMethods::Write

Public Instance Methods

raw_write_attribute(attr_name, value)
Alias for: write_attribute
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 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
Also aliased as: raw_write_attribute

Private Instance Methods

attribute=(attribute_name, value) click to toggle source

Handle *= for method_missing.

# File lib/active_record/attribute_methods/write.rb, line 54
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 58
def type_cast_attribute_for_write(column, value)
  return value unless column

  column.type_cast_for_write value
end