在使用设计注册后24小时发送第二封确认电子邮件

时间:2015-11-03 15:19:55

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

我在我的rails应用程序中使用设计,用户可以注册然后立即登录而无需在24小时内确认他们的电子邮件地址。我使用设计初始化程序中的config.allow_unconfirmed_access_for选项执行此操作。 我想知道发送第二封确认电子邮件的最佳方式是什么,他们注册后24小时如果他们还没有确认他们的电子邮件地址,那会说:

  

"您的帐户已被停用,因为您尚未确认您的帐户   过去24小时内的电子邮件地址。请点击此处重新激活   您的帐户"

我使用sidekiq。 任何答案或建议将不胜感激,提前感谢

1 个答案:

答案 0 :(得分:1)

Sidekiq允许你schedule jobs。在注册时间,24小时后将作业排入队列,检查用户是否已经确认,如果没有,则发送电子邮件。

首先,您需要的工作只接受用户ID并发送邮件:

class RegistrationReminder
  include Sidekiq::Worker

  def perform(user_id)
    user = User.find(user_id)
    return if user.confirmed_at # They already confirmed their email
    # Send them mail
  end
end

然后,customize your Devise controller使用sign_up方法排除作业。

rails generate devise:controllers users
class Users::SessionsController < Devise::SessionsController
  def sign_up(resource_name, user)
    RegistrationReminder.perform_in(24.hours, user.id)
    super # Finish signing the user in
  end
end
# config/routes.rb
devise_for :users, controllers: { sessions: "users/sessions" }