使用设计导轨重新生成确认令牌4

时间:2015-10-28 09:49:09

标签: ruby-on-rails devise

我正在尝试为尚未确认其帐户的用户重新生成确认令牌。我想在几天之后向用户重新发送确认电子邮件。我正在关注此链接以重新生成该用户的新令牌,并生成它但仍然无效。

https://github.com/plataformatec/devise/issues/2615

我正在本地控制台上执行这些步骤。

@user = User.find_by_email("abc@xyz.com")
token = Devise.token_generator.generate(@user.class, :confirmation_token)

then in token i am getting array such as 

token = ["gfbgk4535843tbk","8545kjbng8hguhggre8gergerkgjebg8gergkerjgg9ergejgn"]

然后我只是发送这样的电子邮件

Devise::Mailer.confirmation_instructinos(@user,token.last).deliver

然后它向该用户发送电子邮件,但是当用户点击确认帐户时,它会将用户带到该网站,但是当用户尝试登录其无效时。

1 个答案:

答案 0 :(得分:4)

您可以使用Devise内置方法重新发送确认电子邮件:

users = User.where('confirmation_token IS NOT NULL')
users.each do |user|
  user.send_confirmation_instructions
end

send_confirmation_instructions方法应生成新令牌if token period expired。 我已经使用过这种方法几次,它完成了预期的工作。

您也可以尝试resend_confirmation_instructions

  # Resend confirmation token.
  # Regenerates the token if the period is expired.
  def resend_confirmation_instructions
    pending_any_confirmation do
      send_confirmation_instructions
    end
  end

方法上方的注释清楚地表明将重新生成令牌。我还没试过这个。