繁体   English   中英

Devise - 创建用户帐户并确认而不发送 email?

[英]Devise - create user account with confirmed without sending out an email?

我将 devise 与 facebook 集成在一起。现在当我在用户使用他/她的 facebook 帐户登录后创建用户帐户时,

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

即使该帐户已确认,仍会触发确认 email。 知道如何关闭 email 吗?

确认回调发生在创建之后,所以它发生在您的示例的第1行,在您手动设置confirmed_at之前。

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

所以,像:

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

原始答案:

如果您将confirmed_at与您的create参数一起传递,则不应发送邮件,因为测试帐户是否已“确认”是要查看该日期是否已设置。

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

那,或者只是使用new而不是create来构建你的用户记录。

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

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

文档

跳过发送确认/再确认通知电子邮件after_create / after_update。 与#skip_confirmation!不同,记录仍需要确认。

打开 Rails 控制台

rails c

注意用户(通过 id)或使用 rails helper 方法,例如。 首先,最后。 创建一个变量来保存用户。

user =  User.last

使用 skip_confirmation 助手来确认用户,然后保存。

user.skip_confirmation
user.save

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM