Skip to Content Skip to Search

Active Record Attribute Methods Write

Methods
W

Instance Public methods

write_attribute(attr_name, value)

Updates the attribute identified by attr_name using the specified value. The attribute value will be type cast upon being read.

# File activerecord/lib/active_record/attribute_methods/write.rb, line 31
      def write_attribute(attr_name, value)
        name = attr_name.to_s
        name = self.class.attribute_aliases[name] || name

        return @attributes.write_from_user(name, value) unless name == "id" && @primary_key

        if self.class.composite_primary_key?
          @attributes.write_from_user("id", value)
        else
          if @primary_key != "id"
            ActiveRecord.deprecator.warn(<<-MSG.squish)
              Using write_attribute(:id, value) to write the primary key value is deprecated
              and will be removed in Rails 9.0. Use #id= instead.
            MSG
          end
          @attributes.write_from_user(@primary_key, value)
        end
      end