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
,即可获得正确的条件-请参阅