【问题标题】:Allow option to delete account in confirmation email (devise)允许在确认电子邮件中删除帐户的选项(设计)
【发布时间】:2019-06-08 20:55:44
【问题描述】:

我想允许用户在确认电子邮件中删除他们的帐户。我在我的confirmations_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 或注册/确认控制器。感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    基本上,我认为您希望允许用户以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。如果你愿意,你可以使用它,但我个人更喜欢第一种方式

    【讨论】:

    • 我试过了,但我得到了这个错误:undefined method `cancel_user_registration' for #:0x007fee07fbfbd8>
    • 我是否需要向 Mailer.rb 添加一些内容,以便它可以访问注册控制器中的方法?还是有别的办法?
    • 对不起,你可以试试 cancel_user_registration_path
    • 它仍然说未定义的方法 :( 但是 rake 路由给出:cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel 所以我不确定为什么它不能识别cancel_user_registration
    猜你喜欢
    • 1970-01-01
    • 2021-06-16
    • 2014-12-21
    • 1970-01-01
    • 2017-02-22
    • 2014-08-06
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多