Ruby on rails 设计-创建用户帐户,确认无需发送电子邮件?

Ruby on rails 设计-创建用户帐户,确认无需发送电子邮件?,ruby-on-rails,devise,Ruby On Rails,Devise,我将Desive与facebook集成。现在,当我在用户使用其facebook帐户登录后创建用户帐户时 user = User.create(:email => data["email"], :password => Devise.friendly_token[0,20]) user.confirmed_at = DateTime.now user.save! 即使帐户已被确认,确认电子邮件仍会被激发。你知道我怎样才能关掉电

我将Desive与facebook集成。现在,当我在用户使用其facebook帐户登录后创建用户帐户时

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

即使帐户已被确认,确认电子邮件仍会被激发。你知道我怎样才能关掉电子邮件吗

确认回调发生在创建之后,因此它发生在示例的第1行,在您手动将
confirm\u设置为
之前

根据评论,最正确的做法是使用为此目的提供的方法。在处手动设置
confirm_将起作用,但它会绕过提供的API,这是在可能的情况下应该避免的

比如说:

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

原始答复:

如果您通过了
create
参数中的
confirfied\u,则不应发送邮件,因为测试帐户是否已“确认”是看是否设置了该日期

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

或者只使用
new
而不是
create
来创建用户记录。

如果您只是想阻止发送电子邮件,您可以使用
#跳过确认通知
,如下所示:

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

跳过发送确认/再确认通知电子邮件 创建后/更新后。与“跳过确认”不同!,蒸馏器 需要确认


:确认
从传递给用户类上Desive的模块列表中删除?因为你实际上并没有使用它。但在我的网站上注册的其他用户确实需要电子邮件确认。我认为@misseardng是在请求一个例外情况。仅供参考,我必须将confirated_at声明为可访问属性(不知道这是否是潜在的安全漏洞)。除此之外,这是有效的!使用User.new和User.skip\u确认!为了避免必须使已确认的_在可访问。使用“新建”不起作用,因为在您呼叫“保存”时会发送电子邮件@waldo关于skip_确认工作的建议though@Khash不,关键是您需要在保存之前将
确认设置为
。简单地使用
new
over
create
不会改变任何东西,但是如果他在保存之前使用了
new
,然后将
confirm\u设置为
,电子邮件就不会被发送。事实上,所有
都跳过确认
does在
处设置为
已确认。\u也就是说,允许提供的
跳过确认处理实际工作更好。这对我很有用!最上面的答案不是:(谢谢!)