рельсы обновляют текущие атрибуты - PullRequest
0 голосов
/ 18 марта 2019

У меня есть простое действие по обновлению.но у меня есть небольшая проблема.Что я хочу: если я пытаюсь изменить пароль, я должен заполнить старый пароль, но если я пытаюсь изменить другие поля, такие как имя, адрес электронной почты, старый пароль не требуется.Как это написать?Помоги мне, пожалуйста.

Это мой старый код:

# PATCH/PUT /users/1
def update
  if @user.authenticate(user_params[:password_old])
    @user.update_attributes(user_params)
    head :no_content
  else
    render json: { message: 'old password incorrect' }, status: :unprocessable_entity
  end
end

Вот мои изменения для новой реализации:

def update
  if @user.authenticate(user_params[:password_old])
    @user.update_attributes!(user_params[:password, :password_confirmation])
    head :no_content
  else
    render json: { message: 'old password incorrect' }, status: :unprocessable_entity
  end
  @user.update_attributes!(user_params)
  head :no_content
end

1 Ответ

0 голосов
/ 18 марта 2019

Просто проверьте, установлен ли новый пароль:

def update
  if user_params[:password] && !@user.authenticate(user_params[:password_old])
    render json: { message: 'old password incorrect' }, status: :unprocessable_entity
    return
  end
  @user.update_attributes!(user_params)
  head :no_content
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...