devise – 创build用户帐户与确认没有发送电子邮件?

我与facebook集成devise。 现在,当用户使用他/她的Facebook账户login后创build用户账户时,

user = User.create(:email => data["email"], :password => Devise.friendly_token[0,20]) user.confirmed_at = DateTime.now user.save! 

即使该帐户已被确认,确认电子邮件仍然被解雇。 任何想法如何我可以打开电子邮件发射?

确认callback发生在创build之后,因此在您的示例的第1行中发生,手动设置confirmed_at之前。

根据评论,最正确的做法是使用为此提供的方法#skip_confirmation! 。 手动设置confir_at将会起作用,但它会绕过提供的API,这是应尽可能避免的。

所以,像这样的:

 user = User.new(user_attrs) user.skip_confirmation! user.save! 

原始答案:

如果您将confirmed_atcreate参数一起传递,则不应该发送邮件,因为对帐户是否已经“确认”的testing是查看是否设置了该date。

 User.create( :email => data['email'], :password => Devise.friendly_token[0,20], :confirmed_at => DateTime.now ) 

这个,或者只是使用new而不是create来build立你的用户logging。

如果您只是想阻止发送电子邮件,则可以使用#skip_confirmation_notification ,如下所示:

 user = User.new(your, args) user.skip_confirmation_notification! user.save! 

见文件

跳过发送确认/重新确认通知邮件after_create / after_update。 与#skip_confirmation!不同,logging仍然需要确认。