设计电子邮件确认过期通知

时间:2015-11-29 23:36:42

标签: ruby-on-rails ruby-on-rails-4 devise devise-confirmable

我在devise gem中包含了确认模块并且工作正常但是我需要在2天后(基于设计配置)在登录时发送未经确认的电子邮件时提醒用户一些flash消息。

config.allow_unconfirmed_access_for = 2.days

如何添加按钮以重新发送邮件以进行确认。

1 个答案:

答案 0 :(得分:1)

您需要创建一个链接到控制器操作的按钮,并为其创建一个路径,如resend_email_path(user)。在控制器操作中,您需要包括:

  def resend_email
    user = User.find(params[:id])
    user.send_confirmation_instructions
  end

有关此方法的详细信息,请参阅:

https://github.com/plataformatec/devise/blob/9f37b6eff7b4f9b0441be5a687b3091db82befc4/lib/devise/models/confirmable.rb#L110-L117

一旦你正常工作,你就可以用remote: true

来做它

要添加Flash消息,请将其放入您未经确认的用户所在的控制器操作中:

if current_user.confirmation_period_expired?
  flash[:error] = "Confirmation Time Expired. #{link_to 'Resend email', resend_email_path(user)}".html_safe
end

请参阅:https://github.com/plataformatec/devise/blob/9f37b6eff7b4f9b0441be5a687b3091db82befc4/lib/devise/models/confirmable.rb#L218-L220