У меня есть система auth с нуля, и когда пользователь нажимает на «редактировать профиль», он должен вводить текущий пароль независимо от поля, которое он хочет редактировать.Проверка подлинности Rais с нуля, проверка текущего пароля
def update
if params[:user][:password].present?
authenticated = @user.authenticate(params[:user][:current_password])
if authenticated && @user.update(user_params)
redirect_to root_url
flash[:notice] = "Your profile was successfully updated!"
else
@user.errors.add(:current_password, 'is invalid') unless authenticated
render :edit
end
elsif @user.update(user_params)
redirect_to root_url
flash[:notice] = "Your profile was successfully updated!"
else
render :edit
end
end
Как я могу назвать проверку подлинности или использовать некоторые проверки контекста модели только для сценария, когда пользователь хочет изменить свой пароль?
Уверенный выглядит хорошо, но как я могу сделать еще один шаг, чтобы пропустить аутентификацию пользователя, если поля пароля не изменены? Я редактировал свой вопрос, но код выглядит довольно уродливо. –
Могу ли я сделать что-то вроде скрытого логического поля, которое устанавливает true, когда заполняется любое поле пароля или поменяются поля пароля (я скрываю их и переключаю с помощью jquery) и проверяю на основе логического значения? –
Я не читал последнее утверждение в вашем вопросе достаточно хорошо. Я думал, что вы хотите потребовать текущий пароль, несмотря ни на что. Я попробую обновить свой ответ. –