默认情况下,如果更改了电子邮件,设计会向旧电子邮件发送确认电子邮件。 在我允许用户通过Twitter登录创建帐户的情况下,他的初始电子邮件是空白的,因为Twitter API不提供用户的电子邮件。之后,如果用户想更新他的电子邮件ID,我想在新电子邮件ID上发送确认电子邮件,因为他的旧电子邮件ID是空白的。
如何通过确认电子邮件发送到新电子邮件来实现此目的。我知道有一个安全漏洞可以向新邮件发送确认电子邮件,但是现在我们可以解决这个问题。
答案 0 :(得分:0)
我认为这不是你可以通过配置实现的。
为避免直接更改源代码(不太可维护),我的before_save
模型上会有一个观察者或User
。
如果我检测到电子邮件更改,我会采取适当的措施(照顾我在评论中提到的内容 - 不发送到新电子邮件,除非旧电子邮件是空白的)。
在相关的说明中,还要看看这个SO问题:Devise, how to override send_confirmation_instructions。也许它提供了一种更干净的方式来做你想做的事。
答案 1 :(得分:0)
我手动拨打
@user.send_confirmation_instructions
并更改了邮件中的以下行:
mail(:to => user.email, :subject => "Confirm your email id")
到
mail(:to => user.unconfirmed_email, :subject => "Confirm your email id")
无需从用户模型中删除可确认模块