将设计确认电子邮件发送到新电子邮件而不是旧电子邮件

时间:2014-05-19 07:29:29

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

默认情况下,如果更改了电子邮件,设计会向电子邮件发送确认电子邮件。 在我允许用户通过Twitter登录创建帐户的情况下,他的初始电子邮件是空白的,因为Twitter API不提供用户的电子邮件。之后,如果用户想更新他的电子邮件ID,我想在电子邮件ID上发送确认电子邮件,因为他的旧电子邮件ID是空白的。

如何通过确认电子邮件发送到电子邮件来实现此目的。我知道有一个安全漏洞可以向新邮件发送确认电子邮件,但是现在我们可以解决这个问题。

2 个答案:

答案 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") 

无需从用户模型中删除可确认模块