code: def signup!(passwd = nil)
        self.password = passwd || password
        if username.blank?
          raise Parse::Error::UsernameMissingError, "Signup requires a username."
        end
  
        if password.blank?
          raise Parse::Error::PasswordMissingError, "Signup requires a password."
        end
  
        signup_attrs = attribute_updates
        signup_attrs.except! *Parse::Properties::BASE_FIELD_MAP.flatten
  
        # first signup the user, then save any additional attributes
        response = client.create_user signup_attrs
  
        if response.success?
          apply_attributes! response.result
          return true
        end
  
        case response.code
        when Parse::Response::ERROR_USERNAME_MISSING
          raise Parse::Error::UsernameMissingError, response
        when Parse::Response::ERROR_PASSWORD_MISSING
          raise Parse::Error::PasswordMissingError, response
        when Parse::Response::ERROR_USERNAME_TAKEN
          raise Parse::Error::UsernameTakenError, response
        when Parse::Response::ERROR_EMAIL_TAKEN
          raise Parse::Error::EmailTakenError, response
        when Parse::Response::ERROR_EMAIL_INVALID
          raise Parse::Error::InvalidEmailAddress, response
        end
        raise Parse::Client::ResponseError, response
      end
docs: You may set a password for this user when you are creating them. Parse never returns a
   @param passwd The user's password to be used for signing up.
   @raise [Parse::Error::UsernameMissingError] If username is missing.
   @raise [Parse::Error::PasswordMissingError] If password is missing.
   @raise [Parse::Error::UsernameTakenError] If the username has already been taken.
   @raise [Parse::Error::EmailTakenError] If the email has already been taken (or exists in the system).
   @raise [Parse::Error::InvalidEmailAddress] If the email is invalid.
   @raise [Parse::Client::ResponseError] An unknown error occurred.
   @return [Boolean] True if signup it was successful. If it fails an exception is thrown.