我正在尝试在我的应用中执行某些操作,如果用户未在90天内登录,他们的帐户将设置为未经确认,并且会通过电子邮件重新确认他们的电子邮件地址。< / p>
我知道我可以用这个重新发送电子邮件:
Devise::Mailer.confirmation_instructions(@user).deliver
我在架构中看到了这些相关字段 -
t.string "unconfirmed_email"
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
将它们全部设置为nil,未经证实的电子邮件回到常规电子邮件是否有效?
答案 0 :(得分:2)
根据设计代码,清除confirmation_token并将unconfirmed_email设置为原始电子邮件应重新发送确认。由于你有unconfirmed_email列,我假设你在设计配置中启用了可重新启动。
您可以在下面的确认模型中看到相关代码
after_update :send_reconfirmation_instructions, :if => :reconfirmation_required?
def send_reconfirmation_instructions
@reconfirmation_required = false
unless @skip_confirmation_notification
send_confirmation_instructions
end
end
# Send confirmation instructions by email
def send_confirmation_instructions
ensure_confirmation_token!
opts = pending_reconfirmation? ? { :to => unconfirmed_email } : { }
send_devise_notification(:confirmation_instructions, opts)
end
# Generate a confirmation token unless already exists and save the record.
def ensure_confirmation_token!
generate_confirmation_token! if should_generate_confirmation_token?
end
def should_generate_confirmation_token?
confirmation_token.nil? || confirmation_period_expired?
end