我正在使用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
,以确保在实际使用该应用时发送 电子邮件。非常感谢,伙计们!
答案 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
。