gpt4 book ai didi

ruby-on-rails - 如何更改用户状态以及 Devise 操作

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:35 24 4
gpt4 key购买 nike

我正在使用 Rails 4.1 和 Devise 3.2.4

我正在使用 Devise 的电子邮件确认来设置用户帐户,但我还需要在电子邮件确认后做一些事情,例如在帐户被视为事件之前设置账单信息。

如何使用 Devise 的机制管理用户状态?

即当用户首次注册时,我希望他们的状态为"new"。当他们确认他们的电子邮件时,我希望他们的状态更改为“email_confirmed”,当他们提交付款信息时,我希望它更改为“事件”。我还想说明他们何时更改电子邮件地址——他们的状态需要返回到"new"。

最佳答案

设计使用用户表中的“confirmation_token”字段。您可以使用它来设置所有条件。您可以在用户表中添加一个 bool 字段让我们说“事件”(默认为假)。当新用户注册时,“confirmation_token”字段包含您的 token ,因此您可以检查其非零条件,但我们现在不需要用户处于事件状态,因此“事件”字段将保持为假。现在,当用户单击电子邮件中的链接时,设计将“confirmation_token”字段更改为 nil,因此您可以再次检查它,但我们仍然不希望用户处于事件状态,因此您的“事件”字段将保持为假。

现在,如果您在用户单击电子邮件中的确认 token 时查看 devise github 存储库,您的应用程序将被重定向到 confirmation controllers show action .

在您的情况下,您可以将用户重定向到您的付款信息页面,并附上一条通知,如“您需要完成付款信息才能进行交易”或任何您喜欢的内容。您必须覆盖 devise after_confirmation_path类似的方法:

# The path used after confirmation.
def after_confirmation_path_for(resource_name, resource)
if signed_in?(resource_name)
signed_in_root_path(resource)
else
# your payment information page path
end
end

当用户成功完成付款信息详细信息时,您可以将他/她的事件字段设置为 true 并以此为基础。

关于ruby-on-rails - 如何更改用户状态以及 Devise 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com