2

我正在创建一个新的 Rails 系统。我正在设置身份验证设备。我的问题是我现有的所有用户都没有确认令牌,我想不出办法将令牌交给他们。我曾预计在登录时会提示用户重新发送令牌,但事实并非如此。此外,当用户成功通过身份验证时,我无法弄清楚如何更改身份验证过程以添加此链接。

我想对其进行更改,以便他们可以登录特定时间段,但会在该时间段到期之前向他们显示一个链接以重新发送确认。我看到有一种方法可以设置他们能够登录的时间段,但我不知道该配置在哪里。我还担心,由于他们在数据库中根本没有 confirm_token ,所以它不会有太大的好处。

4

2 回答 2

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

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

检查它:可确认

于 2011-08-23T21:10:06.273 回答
1

只需像这样确认您现有的用户

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

在控制台或脚本中。

于 2011-09-09T21:10:28.343 回答