设计:签署某些用户,而不是范围

时间:2013-09-16 07:54:41

标签: ruby-on-rails devise

我希望用户(具有管理员角色)能够在删除其帐户后注销其他用户。问题是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等自定义方法?< / p>

2 个答案:

答案 0 :(得分:0)

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

config.sign_out_all_scopes = false

答案 1 :(得分:0)

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

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