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
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
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.