Ruby on Rails + Devise +现有用户表==否confirm_tokens

时间:2011-08-23 20:50:30

标签: ruby-on-rails devise confirmation

我正在创建一个新的导轨系统。我正在设置验证设计。我的问题是我所有的现有用户都没有确认令牌,我无法找到一种方法来获取令牌。我原本以为在登录时会提示用户重新发送令牌但事实并非如此。此外,当用户成功进行身份验证时,我无法弄清楚如何更改身份验证过程以添加此链接。

我想更改它以便他们可以登录一段时间,但会在时间段到期之前向他们显示重新发送确认的链接。我看到有一种方法可以设置他们能够登录的时间段,但我无法弄清楚该配置的位置。我也很担心,因为他们在数据库中根本没有confirm_token,所以不会有太多好处。

2 个答案:

答案 0 :(得分:2)

这与设计的可确认选项有关。在这里你必须做两件事。首先,您必须设置允许回答确认的时间段。

要设置用户必须确认的时间段,您必须配置设备初始化程序并取消注释一行:

# config/initializers/devise.rb
config.confirm_within = 2.days

接下来你必须手动发送确认邮件(如果它不存在,这个函数也会创建确认令牌),这可以通过控制台或脚本完成:

# in console
User.find(1).send_confirmation_instructions

我会测试它,然后编写以下脚本:

# script.rb
User.all.each do |user|
  user.send_confirmation_instructions
end

如果您有数千名用户但是会完成这项工作,那么这是一个非常缓慢的过程。

检查出来:Confirmable

答案 1 :(得分:1)

只需确认您的现有用户

即可
User.all.each do |user| user.confirm! end

在控制台或脚本中。