4

我希望一个用户(具有管理员角色)能够在删除他的帐户后注销另一个用户。问题是sign_out辅助方法会注销两个用户,因为它适用于他们的范围,这是相同的。如何仅注销一个用户?

这是代码:

class Users::RegistrationsController < Devise::RegistrationsController
  # ...
  def destroy
    @user = User.find(params[:id])
    sign_out @user
    @user.destroy
    redirect_to users_path, notice: I18n.t("messages.user_destroyed")
  end
  # ...
end

并且,作为一个子问题,使用控制器扩展设计以执行类似的用户相关任务,即向它们添加自定义方法,如 , 等,这是一种好习惯indexshow

4

2 回答 2

0

我刚刚遇到了这个问题,但是(至少对我而言)似乎没有必要。我正在使用 CanCanCan 进行授权,如果我只是删除用户而不将其注销,那么一旦用户尝试执行任何操作,CanCanCan 就会识别出他们不是授权用户并且不会让他们这样做。正如我设置的那样,它只是将它们直接重定向到登录页面。

“以不存在的用户身份登录”结果是“根本没有登录”。

于 2014-10-21T12:05:58.550 回答
0

尝试在您的设计控制器配置中设置以下内容:

config.sign_out_all_scopes = false
于 2013-09-16T08:06:00.937 回答