2013-05-20 197 views
0

我成功地在我的Rails应用程序中安装了设计,用户注册完美无缺。我也已经设置好了,用户可以通过发送电子邮件来确认他们的账户。当用户第一次注册时,这可以正常工作(他们通过确认链接获得确认消息)。Rails设计发送电子邮件到错误的电子邮件地址

然而,当用户改变他/她的电子邮件地址从[email protected][email protected],该邮件传送到[email protected]和确认链路没有确认令牌,它看起来像

http://{HOST}/users/confirmation 

代替正常的

http://{HOST}/users/confirmation?confirmation_token=TOKEN_HERE 

当我重新保存新电子邮件[email protected]它现在交付到这个地址,但确认标记是无效的,因为它不符合分贝。

我不知道出了什么问题。

confirmation_instructions.html.erb

<p>Welcome <%= @resource.unconfirmed_email? ? @resource.unconfirmed_email : @resource.email %>!</p> 

<p>You can confirm your account email through the link below:</p> 

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 

我也有在色器件初始化

也是用sideqik的延迟就业。这些电子邮件全部由sideqik处理

任何帮助? 谢谢

回答

0

我知道这是自发布以来的某个时候,但我遇到了同样的问题并解决了它。

在我来说,我已经从V2.0.4升级设计出应对V2.2.6 - 这似乎是支持的Rails 3

我脱脂,其中提到在V2.2.0这一变化的change log最新版本:

All mailer methods now expect a second argument with delivery options. 

遗憾的是它并没有说什么第二个参数是专门用于;然而事实证明,这是字面上你所期望的......传递给你的Mailers mail方法的选项散列。

我猜,如果你像我一样,以前的设计::梅勒有一行类似如下:

def confirmation_instructions(record, opts) 
    mail :to => record.email, :template_name => 'confirmation_instructions' 
    end 

的问题是,电子邮件先前已确认的电子邮件地址,而不是新的未经证实的一个。因此,您可能希望使用您通过的选项散列来呼叫邮件,该选项散列现在将在其密码:to中包含unconfirmed_email,例如,

{:to => "[email protected]"} 

所以,简单地改变你的邮件呼吁更多的东西一样:

def confirmation_instructions(record, opts) 
    mail opts.merge(:template_name => 'confirmation_instructions') 
    end 
相关问题