如何在Rails skip_confirmation中获取Devise实际上不发送电子邮件?

时间:2015-04-05 05:14:03

标签: ruby-on-rails email devise

我一直试图让用户试用我的Rails网站并遇到了一个问题,即在保存用户时,我的设置会发送一封确认电子邮件。乘以100个虚拟用户并且您遇到问题。 Rails文档和SO引导我skip_confirmation!,沿着以下行[0]:

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

但是,(惊喜)这仍然发送了一封包含每次保存的电子邮件。我怎样才能让Devise停止这样做?

[0] https://stackoverflow.com/a/8673771/4283301

2 个答案:

答案 0 :(得分:1)

Devise的#skip_confirmation!具有误导性。它说“如果你不想在创建时发送确认,也不想生成代码,请调用skip_confirmation!”

在这种情况下我真正想要的是#skip_confirmation_notification!。该文档区分了这个“跳过发送确认/再确认通知电子邮件after_create / after_update。”

这个有效!要使上述代码不发送确认电子邮件,它应如下所示:

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

答案 1 :(得分:1)

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

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

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