Разрешить удаление учетной записи в электронном письме с подтверждением (разработка) - PullRequest
0 голосов
/ 08 июня 2019

Я хочу разрешить пользователю удалять свою учетную запись в электронном письме с подтверждением.Я пытался это сделать в своем файлефирми подтверждений:

<p><%= link_to 'Accept this writer', confirmation_url(@resource, confirmation_token: @token) %></p>
<p><%= link_to "Delete this writer", user_registration_path(@resource), :confirm => "Are you sure?", :method => :destroy %></p>

Но я получаю сообщение об ошибке:

undefined method `user_registration_path'

Вот мои маршруты.rb

...
  devise_scope :user do
    # get "/sign_in" => "users/sessions#new" # custom path to login/sign_in
    get "/apply" => "users/registrations#new", as: "new_user_registration" # custom path to sign_up/registration
  end
  devise_for :users, controllers: { :registrations => "users/registrations", :confirmations => "users/confirmations" }

  resources :users
...

IЯ не уверен, какой путь использовать, или если мне нужно изменить Mailer.rb или контроллер регистрации / подтверждения.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 июня 2019

По сути, я думаю, что вы хотите разрешить пользователю cancel регистрацию, а затем удалить пользователя в вашей базе данных. Прямое удаление пользователя всегда должно требовать, чтобы пользователь сначала вошел в систему, а не непосредственно в электронном письме, которое получает пользователь.

Ваша ссылка для отмены

<%= link_to "Delete this writer", cancel_user_registration_path(confirmation_token: @token) %>

Переопределить метод user::registrations#cancel

class Users::RegistrationsController < Devise::RegistrationsController
  def cancel
    user = User.where(confirmation_token: params[:confirmation_token]).first
    user.delete if user
    super
  end
end

Потому что у вас есть resource :users в ваших маршрутах. Есть DELETE вызов user_path(@resource), который запускает users#destroy. Вы можете использовать его, если хотите, хотя лично я предпочитаю первый способ

...