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_at
和create
参数一起传递,则不应该发送邮件,因为对帐户是否已经“确认”的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仍然需要确认。