#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
У меня есть простое действие обновления. но у меня небольшая проблема. Что я хочу: если я попытаюсь изменить пароль, я должен ввести старый пароль, но если я попытаюсь изменить другие поля, такие как имя, адрес электронной почты, старый пароль, которые не являются обязательными. Как это написать? Помогите мне, пожалуйста.
Это мой старый код:
# 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. Я удалил свой ответ, потому что, возможно, неправильно понял ваш вопрос
Ответ №1:
Просто проверьте, установлен ли новый пароль:
def update
if user_params[:password] amp;amp; !@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
Комментарии:
1. Большое спасибо 🙂