我有一个控制器过滤器,如果用户的帐户已过期,应该注销用户,但我无法找到一种简单的方法。
我试过了:
if user_signed_in? && current_user.status == 'expired'
redirect_to destroy_user_session_path
end
但上述方法不起作用,因为Devise想要在注销路径上执行DELETE操作,因此您不能只重定向到它。
答案 0 :(得分:5)
<强> active_for_authentication?
强>
在对用户进行身份验证后,在每个请求中,Devise通过调用model.active_for_authentication?来检查您的模型是否处于活动状态。其他设计模块会覆盖此方法。例如,:确认覆盖.active_for_authentication?如果您的模型得到确认,则仅返回true。
您自己覆盖此方法,但如果您这样做,请不要忘记调用super:
def active_for_authentication?
super && special_condition_is_valid?
end
查看documentation以了解更多详情和示例。这个doc也会对您有所帮助。