def []=(key, value)
      raise InvalidArgumentAttributeError unless valid_attributes.include?(key)
      send(key, value)
    end
def []=(key, value)
      raise InvalidArgumentAttributeError unless valid_attributes.include?(key)
      send(key, value)
    end
Allow the record to behave like a hash by giving access to @attributes
 via []= setter

 Validates the key requested to set is included in the valid_attributes
 white list and then uses the uses the various setter methods below to
 set the value.

 @param key, attribute name
 @param value, value to set