我有一个简单的更新操作。但我有一点问题。 我想要的是: 如果尝试更改密码,则应填写旧密码,但是如果尝试更改其他字段,例如名称,电子邮件,旧密码,则不需要。怎么写呢?请帮帮我。
这是我的旧代码:
# 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
答案 0 :(得分:0)
只需检查是否设置了新密码:
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