На основе существующего вопроса, который описывает, как запрашивать пароль для удаления учетной записи пользователя с помощью Ruby драгоценного камня Devise's destroy_with_password
.
Мое действие уничтожения выглядит следующим образом это:
def destroy
@user = User.find(current_user.id)
if @user.destroy_with_password(user_params)
redirect_to root_url, notice: "User deleted."
else
redirect_to root_url
flash[:notice] = "Couldn't delete"
end
end
def user_params
params.require(:user).permit(:first_name, :last_name, :password,
:password_confirmation, :current_password... (etc) )
end
и форма:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :delete }) do |f| %>
<%= f.password_field :current_password, autocomplete: "off" %>
<%= f.button :submit %>
<% end %>
Перенаправление работает, но перенаправляет, даже если введен правильный пароль без удаления учетной записи.
I run binding.pry
, и @user.destroy_with_password(user_params)
всегда возвращает false.
Если я открою user_params
, это то, что возвращается:
<ActionController::Parameters {"current_password"=>"123456"} permitted: true>