设计的reset_password_sent_at分配

Bri*_*ugh 3 ruby-on-rails devise

问题是当用户点击链接重置密码(来自电子邮件)并且尝试重置(在表单中)发生错误时,设计正在检查reset_password_sent_at:

Reset password token has expired, please request a new one
Run Code Online (Sandbox Code Playgroud)

这意味着,"当生成reset_password_token时,需要将@ user.reset_password_sent_at设置为Time.now,否则当设计运行@ user.reset_password_period_valid?以查明重置令牌是否仍然有效时,它将变为nil并假设令牌已过期."

我不明白的是如何以及在何处将reset_password_sent_at分配给Time.now

我是否需要通过控制台为所有用户分配Time.now?如果是这样,我该怎么做?

或者,它是一个before_create(或其他东西),我需要将Time.now分配给reset_password_sent_at?如果是这样,我该怎么做?

Pra*_*thy 10

你不用担心reset_password_sent_at; devise当reset_password发送给用户时,这将正确设置.

reset_password_sent_atreset_password_withinconfig/initializers/devise.rb文件中设置的参数一起使用.它应该看起来像这样:

config.reset_password_within = 2.hours
Run Code Online (Sandbox Code Playgroud)

很可能它被设置为nil0,这使应用程序抛出该password reset token has expired方法.