我希望允许用户删除确认电子邮件中的帐户。我已经在我的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或注册/确认控制器。谢谢您的帮助!
答案 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 :users
。 DELETE
有user_path(@resource)
调用会触发users#destroy
。如果您愿意,可以使用它,尽管我个人更喜欢第一种方式