Ruby on rails 返回设备3.1中的设备确认令牌

Ruby on rails 返回设备3.1中的设备确认令牌,ruby-on-rails,rspec,devise,Ruby On Rails,Rspec,Devise,既然designe已从数据库中删除:confirmation_令牌,我如何在rspec中返回designe确认令牌 我试图通过使用确认令牌手动访问用户确认路径来测试可确认模块。如何实现这一点?确认流程已更改。现在,确认流使用User.confirm\u by\u令牌。您可以这样做: old_token = User.last.confirmation_token new_token = Devise.token_generator.digest(User, :confirmation_token

既然designe已从数据库中删除:confirmation_令牌,我如何在rspec中返回designe确认令牌


我试图通过使用确认令牌手动访问用户确认路径来测试可确认模块。如何实现这一点?

确认流程已更改。现在,确认流使用User.confirm\u by\u令牌。您可以这样做:

old_token = User.last.confirmation_token
new_token = Devise.token_generator.digest(User, :confirmation_token, old_token)
User.last.update_attribute(:confirmation_token, new_token)
visit user_confirmation_url(confirmation_token: old_token)

莱昂纳多·平托(Leonardo Pinto)非常有用的答案的一个细微变化:

# Generate new raw/encrypted confirmation token pair and update database.
# This lets us visit the new "raw" path to confirm the user.
raw_confirmation_token, db_confirmation_token = 
  Devise.token_generator.generate(User, :confirmation_token)
User.last.update_attribute(:confirmation_token, db_confirmation_token)
visit user_confirmation_url(confirmation_token: raw_confirmation_token)
背景:如“在数据库中存储摘要令牌”中所述,Desive 3.1+向用户发送“原始”确认令牌,并在数据库中保存加密版本。当用户单击原始链接时,原始令牌将在数据库中搜索之前重新加密。请参阅此源代码中的
发送确认\u指令
生成确认\u令牌

此代码生成一对新的原始和加密令牌,用新的加密版本更新数据库中的最后一个用户,然后
visit
s原始版本。令牌应匹配,并且应确认帐户

虽然不是在原来的问题中,我还想测试Desive confirmation mailer中的正确链接,但我认为这是不可能的:当我创建用户时,确认电子邮件会立即发送,因此电子邮件正文包含原始令牌,而不是此处生成的新令牌