我正在尝试为尚未确认其帐户的用户重新生成确认令牌。我想在几天之后向用户重新发送确认电子邮件。我正在关注此链接以重新生成该用户的新令牌,并生成它但仍然无效。
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
然后它向该用户发送电子邮件,但是当用户点击确认帐户时,它会将用户带到该网站,但是当用户尝试登录其无效时。
答案 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
方法上方的注释清楚地表明将重新生成令牌。我还没试过这个。