has_secure_password предотвращает установку логического значения в true
Я хочу сделать подтверждение по электронной почте после настройки входа / регистрации и сеансов с использованием метода has_secure_password и authenticate. У меня есть пользовательская модель, и я добавил подтвержденное логическое значение. Когда пользователь создается, я устанавливаю для его подтвержденного логического значения значение false и отправляю ему электронное письмо со ссылкой. При щелчке по ссылке генерируется запрос GET для /users/:id/ verify, и выполняется код действия "verify" в users_controller, который выглядит следующим образом:
def confirm
@user = User.find(params[:id])
@user.update_attributes(confirmed: true)
if @user.save
sign_in(@user)
flash[:success] = "Your account has been successfully confirmed"
else
flash[:error] = "There has been a problem confirming your account "
end
redirect_to root_path
end
Очень просто (я сделаю проверку токена позже). Моя проблема в том, что мой пользователь никогда не сохраняется.
@user.errors.full_messages
возвращает:["Password is too short", "Password confirmation can't be blank"]
Как я могу изменить объект пользователя без необходимости каждый раз редактировать его пароль? Любая помощь будет принята с благодарностью.
Спасибо!
1 ответ
Попробуйте использовать update_attribute вместо update_attributes.
@user.update_attribute(:confirmed, true)