如何让 Rails skip_confirmation 中的 Devise 实际上不发送电子邮件?

How to get Devise in Rails skip_confirmation to actually not send an email?

我一直在尝试引导用户测试我的 Rails 网站和 运行 问题,即在保存用户时,我的设置会发送一封确认电子邮件。乘以 100 个虚拟用户,你就有问题了。 Rails 文档和 SO 引导我 skip_confirmation!,遵循以下行 [0]:

user = User.new(:username => name, :email => email, :password =>    password)
user.skip_confirmation!
user.save

然而,(惊喜)这仍然会在每次保存时发送一封电子邮件。我怎样才能让 Devise 停止这样做?

[0]

Devise 的 #skip_confirmation! 具有误导性。它说 "If you don't want confirmation to be sent on create, neither a code to be generated, call skip_confirmation!."

在这种情况下,我真正想要的是 #skip_confirmation_notification!。文档区分了这个 "Skips sending the confirmation/reconfirmation notification email after_create/after_update."

这行得通!要使上述代码不发送确认电子邮件,它应该如下所示:

user = User.new(:username => name, :email => email, :password =>    password)
user.skip_confirmation_notification!
user.save

您也可以简单地从 user.rb 文件中的以下代码中删除 :confirmable

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :async

在你的测试环境中ActionMailer::Base.delivery_method应该设置为:test,这意味着这些邮件不会被发送出去。