持有发送重置密码的电子邮件,直到某些默认设置为rails

时间:2017-12-25 08:18:25

标签: ruby-on-rails ruby ruby-on-rails-3 email devise

我从[{1}}继承了PasswordController,我创建了一个Devise::PasswordsController函数,帮助我发送用户重置密码通知电子邮件,其实现:

create

它工作正常但如果用户点击重置密码5次将发送5封电子邮件(如果发生延迟或用户永远不会等待,他们需要快速转发),最后一封将只有工作,所以我想禁用发送电子邮件,直到此令牌过期或其他什么,我搜索它但找不到任何东西,我想在用户表中创建一个新的属性,这将是一个 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 来指示何时是最后一次发送电子邮件,但我在问是否有更好的方法来使用设计。

1 个答案:

答案 0 :(得分:3)

您可以使用user.reset_password_period_valid?

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

这基本上就是你建议的实施;但如果您使用Rcoverable设计模块,它已经内置了!