如何使用 SeedFu 跳过设计确认电子邮件 gem

How to Skip Devise Confirmation email using SeedFu gem

我正在使用 Seed-Fu gem 来填充我的数据库。所以,我的一个种子文件中有这个:

User.seed_once(:email) do |user|
  user.id = 1
  user.email = "test@test.com"
  user.first_name = "First"
  user.last_name = "Last"
  user.confirmation_sent_at = Time.zone.now - 1.hour
  user.confirmed_at = Time.zone.now
  user.roles = [root,staff]
  user.permissions = Permission.all
end

据我所知,应该 阻止 Devise 发送确认电子邮件。然而,它不是,所以(因为我使用的是 Letter Opener gem)我的浏览器被确认电子邮件淹没了。任何人都知道为什么会发生这种情况以及我如何说服 Devise 在我播种时不发送这些电子邮件?

解决方案:

根据下面另一个人的回答,我将 Devise::Mailer.perform_deliveries = false 添加到该夹具文件的顶部。然后,我找到了我的最终夹具文件并在其末尾添加了 Devise::Mailer.perform_deliveries = true 以确保在实际使用该应用程序时 发送电子邮件。非常感谢大家!

你可以。具体来说,您需要在某处设置此设置:

Devise::Mailer.delivery_method = :test
Devise::Mailer.perform_deliveries = false

例如,如果您使用 rspec 执行此操作,那么您可能会将其放入 spec/rails_helper.rb

你只需要在用户对象上调用确认方法。看下面的代码

user.confirm

因此在您的情况下,代码将类似于

User.seed_once(:email) do |user|
  user.id = 1
  user.email = "test@test.com"
  user.first_name = "First"
  user.last_name = "Last"
  user.confirm 
  user.roles = [root,staff]
  user.permissions = Permission.all
end