Rails 设计 - 单独的 confirm_within 时间用于重新确认

Rails Devise - Separate confirm_within time for reconfirmable

config/initializers/devise.rb 中,我设置了 config.reconfirmable = true,现在我可以使用 Devises 流程更改电子邮件并发送包含确认令牌的确认邮件。

我也知道我可以用 config.confirm_within = 2.weeks 设置设计令牌的有效期。

但这似乎是两个确认令牌的全局选项:

  1. 在注册确认邮件中发送的令牌
  2. 电子邮件更改确认邮件中发送的令牌。

我在文档中找不到任何内容来为这两个令牌设置不同的到期日期。我正在寻找这样的东西 config.confirm_reconfirmable_within = 3.days

我是不是遗漏了什么或者不可能?

我的简短回答是在默认的 Devise 中是不可能的。

official doc 所列,confirm_within 是它唯一的相关参数。

我想很少有用户愿意为确认电子邮件设置不同的有效期,所以关于这一点参数不可配置也许并不奇怪......

它似乎在 vendor/bundle/ruby/3.0.0/gems/devise-**/lib/devise/models/confirmable.rb 中定义的 Confirmable#confirm 中进行控制。因此,您可以根据需要重新定义方法。