我希望用户(具有管理员角色)能够在删除其帐户后注销其他用户。问题是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
并且,作为一个子问题,使用控制器扩展设计用于类似的用户相关任务是一个好习惯,即向他们添加index
,show
等自定义方法?< / p>
答案 0 :(得分:0)
尝试在设计控制器配置中设置以下内容:
config.sign_out_all_scopes = false
答案 1 :(得分:0)
我刚刚遇到这个问题,但(至少对我而言)似乎没有必要。我正在使用CanCanCan进行授权,如果我只是删除了用户而没有注销,那么一旦用户尝试做任何事情,CanCanCan就会发现他们不是授权用户,也不会让他们这样做。当我设置它时,它只是将它们直接重定向到登录页面。
“以不存在的用户身份登录”原来是“根本没有登录”。