Ruby on rails RubyonRails+;设计+;现有用户表==无确认标记

Ruby on rails RubyonRails+;设计+;现有用户表==无确认标记,ruby-on-rails,devise,confirmation,Ruby On Rails,Devise,Confirmation,我正在创建一个新的rails系统。我正在设置Desive进行身份验证。我的问题是,我现有的所有用户都没有确认令牌,我无法找到一种方法将令牌发送给他们。我原以为登录时会提示用户重新发送令牌,但事实并非如此。此外,当用户成功进行身份验证时,我不知道如何更改身份验证过程以添加此链接 我想更改它,以便他们可以登录一段时间,但他们会看到一个链接,在该时间段到期之前重新发送确认。我看到有一种方法可以设置他们可以登录的时间段,但我不知道该配置在哪里。我还担心,由于他们在数据库中根本没有确认令牌,这不会有多大好

我正在创建一个新的rails系统。我正在设置Desive进行身份验证。我的问题是,我现有的所有用户都没有确认令牌,我无法找到一种方法将令牌发送给他们。我原以为登录时会提示用户重新发送令牌,但事实并非如此。此外,当用户成功进行身份验证时,我不知道如何更改身份验证过程以添加此链接


我想更改它,以便他们可以登录一段时间,但他们会看到一个链接,在该时间段到期之前重新发送确认。我看到有一种方法可以设置他们可以登录的时间段,但我不知道该配置在哪里。我还担心,由于他们在数据库中根本没有确认令牌,这不会有多大好处。

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

要设置用户必须确认的时间段,您必须配置Desive初始值设定项并取消注释一行:

# 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
这是一个非常缓慢的过程,如果你有成千上万的用户,但会做的工作


查看:

只需像这样确认现有用户即可

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

在控制台或脚本中。

我在config/initializers/designe.rb下找到了confirm_的设置。我不确定这是我应该设置它的地方,还是应该尝试在某个环境文件中进行设置。然而,这对我不起作用。我假设这是因为用户没有确认令牌。但希望这能帮助其他人。这是启用的,但这不是我要说的标记。我说的是用户注册后的确认。现有用户将没有确认令牌,他们将无法登录。如果我尝试设置一个时间段,让他们可以在没有确认的情况下登录,这是行不通的。所以我不知道如何为他们创建确认令牌,同时通知他们需要确认他们的帐户。我第一次误解了这个问题。。。我修正了我的答案!不要认为他想自动确认所有用户。我想他希望他们必须确认他们的电子邮件。