如何使用SeedFu gem跳过Devise Confirmation电子邮件

时间:2017-11-04 02:32:55

标签: ruby-on-rails ruby devise seeding

我正在使用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添加到此fixture文件的顶部。然后,我找到了我的最终夹具文件,并在其末尾添加了Devise::Mailer.perform_deliveries = true,以确保在实际使用该应用时发送 电子邮件。非常感谢,伙计们!

2 个答案:

答案 0 :(得分:1)

您只需要在用户对象上调用确认方法即可。请参阅以下代码

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

答案 1 :(得分:0)

你可以turn off email sends from Devise in tests。具体来说,你需要在某个地方设置这个:

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

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