Ruby on rails 使用designe强制用户注销

Ruby on rails 使用designe强制用户注销,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个控制器过滤器,如果用户的帐户过期,它应该注销用户,但我想不出一个简单的方法 我试过: if user_signed_in? && current_user.status == 'expired' redirect_to destroy_user_session_path end 但上述方法不起作用,因为Deave希望在注销路径上执行删除操作,因此您不能仅重定向到该路径。active\u进行身份验证? 对用户进行身份验证后,在每个请求中,设计通过调用model.act

我有一个控制器过滤器,如果用户的帐户过期,它应该注销用户,但我想不出一个简单的方法

我试过:

if user_signed_in? && current_user.status == 'expired'
  redirect_to destroy_user_session_path
end

但上述方法不起作用,因为Deave希望在注销路径上执行删除操作,因此您不能仅重定向到该路径。

active\u进行身份验证?

对用户进行身份验证后,在每个请求中,设计通过调用model.active\u for\u authentication?检查您的模型是否处于活动状态?。此方法被其他设计模块覆盖。例如,:confirmable overwrites.active\u用于\u身份验证?仅当您的模型得到确认时才返回true

您可以自己覆盖此方法,但如果覆盖,请不要忘记调用super:

def active_for_authentication?
  super && special_condition_is_valid?
end

查看以了解更多详细信息和示例。这也会对你有所帮助。

谢谢,这几乎能让我达到目的。问题在于,我无法区分尚未确认的用户(我使用confirmable)和由于其他原因(过期/暂停/等)而处于非活动状态的用户。有什么想法吗?解决了-您只需覆盖用户的
inactive_message
,即可获得正确的条件-请参阅