2012-07-08 113 views
20

我想使用设计选项:在我的用户模型中重新确定,所以无论何时用户更改他的电子邮件,他都需要使用通过电子邮件发送的链接进行确认。设计重新确定

最大的问题是,该电子邮件被发送从未...

我的设置是用色器件2.1.2是:

用户模型:

attr_accessible: unconfirmed_email, ... 

devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable 

在initilizer色器件.RB:

config.reconfirmable = true 
在路线

devise_for :users 

以模型字段的形式unconfirmed_email被正确设置。我通过控制台检查了这一点。

第一封确认邮件,当用户在页面上注册时发送没有问题。

我试图将此代码添加到初始化目录,以覆盖该被触发的after_update钩色器件梅索德调试问题:

module Devise::Models::Confirmable 
    def send_confirmation_instructions 
    debugger 
    end 
end 

好像send_confirmation_instructions不会被调用,因为我从来没有调试器。

我是否需要调用重新确认,或者在将模型属性“unconfirmed_email”设置为新的电子邮件地址时自动触发? jj。

Thankfull for any help, j。

+1

对于reconfirmable工作你必须添加一个新的列到你的用户表中 't.string:unconfirmed_email#只有在使用重新确认' 你已经完成了吗? – Himshwet 2012-07-09 06:48:34

+0

嗨janders。多数民众赞成在所有设置,我在我的用户模型和attr_accessible属性...我还没有解决这个问题,所以任何帮助是非常wellcome。 – user1311103 2012-07-09 10:49:50

+0

对不起,不知道有什么问题 – Himshwet 2012-07-10 07:29:37

回答

33

OK,这是尴尬..

潜水到设计代码后,我想通了,你不需要设置您的用户模型的unconfirmed_email属性,但只是改变了现有的电子邮件属性。属性unconfirmed_email仅在内部用于Devise存储电子邮件地址,直到确认。

devise gem的后续版本在初始迁移中解释了这一点。这里是“可证实”部分(注意在最后一行的注释)从XXX_devise_create_users.rb迁移:

## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

对不起打扰,但希望这可以帮助别人有同样的问题...

+2

谢谢你。很高兴知道当我更新模型中的'email'时,Devise会“自动地”填充'unconfirmed_email'。不要忘记标记你的答案为“接受”(是的,即使你自己回答了!)。 – 2012-09-12 23:19:52

+0

是的......你认为是对的......即使是在2年后......对我来说也是有益的。 :) – Alfie 2015-01-09 05:06:30