我在我的rails应用程序中使用设计,用户可以注册然后立即登录而无需在24小时内确认他们的电子邮件地址。我使用设计初始化程序中的config.allow_unconfirmed_access_for
选项执行此操作。
我想知道发送第二封确认电子邮件的最佳方式是什么,他们注册后24小时如果他们还没有确认他们的电子邮件地址,那会说:
"您的帐户已被停用,因为您尚未确认您的帐户 过去24小时内的电子邮件地址。请点击此处重新激活 您的帐户"
我使用sidekiq。 任何答案或建议将不胜感激,提前感谢
答案 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" }