Ruby on rails 保持发送重置密码电子邮件,直到某个索引器设计出rails

Ruby on rails 保持发送重置密码电子邮件,直到某个索引器设计出rails,ruby-on-rails,ruby,ruby-on-rails-3,email,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Email,Devise,我有一个PasswordController继承自designe::passwordscocontroller,我制作了一个create功能,帮助我发送用户重置密码通知电子邮件,其实现: def create # I need to put some condition on the next line self.resource = resource_class.send_reset_password_instructions(resource_params) if

我有一个
PasswordController
继承自
designe::passwordscocontroller
,我制作了一个
create
功能,帮助我发送用户重置密码通知电子邮件,其实现:

  def create
    # I need to put some condition on the next line
    self.resource = resource_class.send_reset_password_instructions(resource_params)
    if successfully_sent?(resource)
      render :json => "Request successfully sent"
    else
      render :json => resource.errors, :status => 422
    end
  end
它可以正常工作,但如果用户点击重置密码5次,5封电子邮件将发送给他(如果发生延迟或用户从不等待,他们需要快速响应),最后一封将只起作用,因此我想禁用发送电子邮件,直到此令牌过期或其他情况,我对此进行了搜索,但找不到任何内容,我曾考虑在用户表中创建一个新属性,该属性将是一个
日期时间
,以指示上次发送电子邮件的时间,但我想问,是否有更好的方法使用designe进行创建。

您可以使用

这基本上就是您建议的实现;但是如果您使用的是
Rcoverable
designe模块,它已经内置了

您可以使用

这基本上就是您建议的实现;但是如果您使用的是
Rcoverable
designe模块,它已经内置了

def reset_password_period_valid?
  reset_password_sent_at && reset_password_sent_at.utc >= self.class.reset_password_within.ago.utc
end