如何在rails-devise网站上注明特定用户(不是current_user)?

时间:2016-11-21 13:24:10

标签: ruby-on-rails ruby devise

我想知道如何让特定用户(不是current_user)退出。

我看到了这个http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/SignInOut#sign_out-instance_method并制作了这段代码。

def kick_admin
  user = User.find params[:user_id]
  user.admin = false
  user.save
  sign_out user #want to kick him. 
end

但它不会让该用户退出,但让我(current_user)退出。 使用sign_out方法的正确方法是什么?

我检查了这个答案(Sign out specific user with Devise in Rails),但没有帮助。

1 个答案:

答案 0 :(得分:3)

您可以这样做的一种方法是在User表中创建一个新属性,称之为force_sign_out

def kick_admin
  user = User.find params[:user_id]
  user.update_attributes(admin: false, force_sign_out: true)
end

并且在ApplicatonController中有一个before操作,这样如果用户尝试任何他已退出的活动

class ApplicationController < ActionController::Base

  before_action :check_if_force_sign_out

  def check_if_force_sign_out
    return unless current_user.force_sign_out
    current_user.update_attributes(force_sign_out: false) # reset for non-admin log in
    sign_out
    redirect_to root_path
  end

end