允许选项删除确认电子邮件中的帐户(设计)

时间:2019-06-08 20:55:44

标签: ruby-on-rails ruby-on-rails-4 devise devise-confirmable

我希望允许用户删除确认电子邮件中的帐户。我已经在我的Confirms_instructions.html中进行了尝试:

<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
...

我不确定要使用什么路径,或者我是否需要修改Mailer.rb或注册/确认控制器。谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

基本上,我认为您想允许用户进行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 :usersDELETEuser_path(@resource)调用会触发users#destroy。如果您愿意,可以使用它,尽管我个人更喜欢第一种方式