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

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

尽管账户已被确认,但仍会发送确认邮箱.你知道我该怎么关掉邮箱吗?

推荐答案

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

根据 comments ,最正确的做法是使用为此目的提供的方法#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来建立你的用户记录.

Ruby-on-rails相关问答推荐

参数数量错误(给定1个,预期为0个;必需关键字:IO、文件名)-活动存储

在URL中将下划线更改为连字符Ruby on Rails

Rails引擎importmap Uncaught ReferenceError:未定义tinymce

active_storage.resolve_model_to_route的不同值代表什么意思?

如何获取 Rails 表单构建器将为某个字段生成的 HTML名称属性?

Devise + Omniauth - 如何传递额外的参数?

如何使用 Vim 插入 ERB 标签?

Rails 中的转义值(类似于 mysql_real_escape_string())

rake assets:precompile try 连接到数据库

Rspec:测试实例变量的赋值

如何避免 has_many :through 关系中的重复?

如何使用失败try 次数使设计可锁定

rails 4.0, rake db:sessions:create

是否有不涉及删除 Gemfile.lock 的在任何源中找不到 *gem*错误的修复?

如何让空白复选框作为假传递给参数

如何翻译 ActiveRecord 模型类名称?

您将如何解析 Ruby 中的 url 以获取主域?

我的 JavaScript 模式/实践很糟糕.我应该go 哪里寻求帮助?

如何检测rails是否在根url?

Rails:您已经激活了 rake 10.3.1,但您的 Gemfile 需要 rake 10.2.2 (Gem::LoadError)