Rails - How To Destroy Users Created Under Devise?

那年仲夏 提交于 2019-11-28 23:28:12

Devise doesn't provide this functionality out of the box. You have created your own destroy action, but you also have to create a custom route to that action.

In your routes:

 match 'users/:id' => 'users#destroy', :via => :delete, :as => :admin_destroy_user

And then when creating the link:

<%= link_to "Destroy", admin_destroy_user_path(user), method: :delete, data: { confirm: "You sure?" } %>

According to devise 4.1 rake routes and views, using the following will help you delete the account once logged in as a user.

<%= link_to "Cancel my account", registration_path(current_user), data: { confirm: "Are you sure?" }, method: :delete %>

I think you have in your routes.rb: resources :users

The problem is that you are not passing the user that you want to delete when clicking:

users/_user.html.erb

<%= link_to "Destroy", user, method: :delete, data: { confirm: "You sure?" } %>

See that in second param I added user instead of user_url.

users_controller.rb

 def destroy
    @user = User.find(params[:id])

    if @user.destroy
        redirect_to root_url, notice: "User deleted."
    end
  end

In controller I removed an @user.destroy. You were calling it twice.

Hope it helps!

Or from rails c you can do something like this where "x" is user id.

user = User.where(id: x)
user.destroy(1) 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!