我使用Rails 4.1和Devise 3.2.4
我使用Devise的电子邮件确认来设置用户帐户,但我还需要在确认帐户之后执行电子邮件确认等操作,然后才能将帐户视为有效帐户。
如何管理用户的状态以及设计机制?
即。当用户第一次注册时,我希望他们的状态为" new"。当他们确认他们的电子邮件时,我希望他们的状态更改为" email_confirmed",当他们提交付款信息时,我希望它更改为"活动"。我还想说明他们何时更改了他们的电子邮件地址 - 他们的状态需要返回" new"。
答案 0 :(得分:1)
设计使用" confirmation_token"用户表中的字段。您可以使用它来设置所有条件。您可以在users表中添加一个布尔字段,让我们说“活动”(默认为false)。当新用户注册" confirmation_token"字段包含您的令牌,因此您可以检查其不是零条件,但我们现在不需要用户激活,因此“活跃”#39;字段仍然是假的。现在,当用户点击电子邮件中的链接时,设计更改" confirmation_token"字段为nil所以你可以再检查一下,但我们仍然不希望用户处于活动状态,这样你就可以“活跃”。字段仍然是假的。
现在,如果您在用户点击电子邮件中的确认令牌时查看设计github repo,您的应用会被重定向到confirmation controllers show action。
在您的情况下,您可以执行的操作是将用户重定向到您的付款信息页面,其中包含类似&#34的通知;您需要完成付款信息以进行交易"或者你可能喜欢什么。您必须覆盖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并从那里开始构建。