我想知道如何让特定用户(不是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),但没有帮助。
答案 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