如何让 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
,这意味着这些邮件不会被发送出去。
我一直在尝试引导用户测试我的 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
,这意味着这些邮件不会被发送出去。