我想在我的用户模型中使用设计选项:reconfirmable,因此每当用户更改其电子邮件时,他都需要通过电子邮件发送的链接进行确认。
最大的问题是,电子邮件从未发送过......
我的设置是设计2.1.2是:
用户模型:
attr_accessible: unconfirmed_email, ...
devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable
在initilizer devise.rb中:
config.reconfirmable = true
在路线中:
devise_for :users
以正确设置模型字段unconfirmed_email的形式。我通过控制台检查了这个。
当用户在页面上注册时,第一封确认电子邮件会毫无问题地发送出去。
我尝试通过将此代码添加到initializers目录来调试问题,以覆盖作为after_update挂钩触发的设计方法:
module Devise::Models::Confirmable
def send_confirmation_instructions
debugger
end
end
似乎从不调用send_confirmation_instructions,因为我从未进入调试器。
我是否需要调用reconfirmable,或者在将模型属性“unconfirmed_email”设置为新的电子邮件地址时是否会自动触发?
感谢任何帮助, 学家
答案 0 :(得分:35)
在深入研究Devise代码后,我发现您不需要设置用户模型的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
很抱歉打扰,但希望这可以帮助有同样问题的人......