我正在尝试使用 Devise 删除用户。我有一个用户列表,每个用户都有他们的电子邮件和他们旁边的“删除”链接,只有我,管理员才能看到。我希望能够简单地单击删除链接以永久删除用户。以下代码删除我,管理员!
<%= link_to "delete", user_registration_path, :method => :delete, :confirm => "You sure?" %>
我认为您需要将要删除的用户的 :id 传递给某种“destroy_user”方法:
@user.find(params[:id]).destroy_user
但是,当您必须向 user_registration_path 提交 DELETE 请求时,您如何做到这一点?
- - - 编辑 - - - -
好的,我已将此方法添加到我的用户 Controller 中:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
end
因此,我需要告诉用户 Controller 在收到 DELETE 请求时调用 destroy 方法。你如何在routes.rb中做到这一点?目前我有:
match '/users/:id', :to => 'users#show', :as => :user
match '/all_users', :to => 'users#index', :as => :all_users
我需要类似的东西:
match 'delete_user', :to => 'users#destroy', :as => :destroy_user, :method => :delete
但这不起作用。链接中应该包含什么?:
<%= link_to "delete", destroy_user, :method => :delete, :confirm => "You sure?" %>
换句话说,为了区分对同一 url 的不同请求类型(GET、DELETE 等),您应该在 routes.rb 文件中放什么?
最佳答案
Devise 不提供删除另一个用户的操作,仅删除当前登录的用户。您必须在其中一个 Controller 中创建自己的操作(最有可能的是,无论哪个 Controller 具有显示所有用户的操作)来处理删除当前登录用户以外的用户。
关于ruby-on-rails - 在 Devise 中以管理员身份销毁用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5170518/