如何更改用户状态以及设计操作

时间:2014-05-23 22:36:43

标签: ruby-on-rails ruby devise

我使用Rails 4.1和Devise 3.2.4

我使用Devise的电子邮件确认来设置用户帐户,但我还需要在确认帐户之后执行电子邮件确认等操作,然后才能将帐户视为有效帐户。

如何管理用户的状态以及设计机制?

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

1 个答案:

答案 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并从那里开始构建。