2011-09-19 101 views
17

我正在使用设计,我希望能够在开发模式时跳过确认电子邮件。由于我的应用程序无法在本地计算机上运行时发送电子邮件,因此我只会收到警报消息,说您需要在访问应用程序之前确认。使用devise在开发中跳过确认电子邮件

回答

23

尝试开信刀宝石从瑞安贝茨

https://github.com/ryanb/letter_opener

它会打开浏览器的邮件而不发送。如果你在开发中,你不想跳过东西,因为东西会被遗漏/被遗忘。

+0

或[letter_opener_web](https://github.com/fgrehm/letter_opener_web)进行登台 –

+0

不确定这里的提问者,但我个人正在用大量数据填充一个大型应用程序。我刚在浏览器中打开了600多个标签,因为我确实使用了开信刀。我同意在大多数情况下,你不想跳过,在这种情况下,我确定。需要跳过。 – Sean

1

设计使用ActionMailer发送电子邮件。在测试模式下,ActionMailer实际上不应该发送任何电子邮件。

查看this tutorial了解ActionMailer和测试环境的说明。

因此,根据环境,您可以基本关闭交货,而不会影响您的实际测试。您只需在environments/test.rb文件中指定该选项。

+0

我在测试文件中看到它具有以下代码:#告诉Action Mailer不要将电子邮件发送到现实世界。 #测试传递方法将发送的电子邮件累积到 #ActionMailer :: Base.deliveries数组中。 config.action_mailer.delivery_method =:test我应该只是将该代码片段复制到config/environments/development.rb文件中 – tomciopp

+0

嗯即使我关闭了交付但我仍然不需要一种方法来满足可确认的模块,因为我仍然会得到我需要确认的相同错误。 – tomciopp

+0

如果您的意思是,只要考虑测试,就可以满足它的一种方法,那么我只会使用模拟对象来伪造确认,或者仅从数据库提供确认代码,因为实际邮件的传递不是'在测试中什么是重要的。重要的是确认机制的作用,对吗?也就是说,当通过确认URL显示正确的确认码时,您想知道某些“已确认”标志在数据库中翻转了吗? – jefflunt

2

在Rails 3中,您可以使用“拦截器”重新路由您的开发电子邮件,如Railscast 206中所述。

26

设计也有一个方法skip_confirmation!,您可以在保存它之前调用模型以避免发送邮件。它只是设置confirmed_at属性,这会导致跳过邮件发送。

1

以您的模型为设计。通常它的user.rb.并删除或注释配置comfirmable。 这将防止确认的过程

13

那样简单说

user=User.new 
user.email="[email protected]" 
user.password="yourPassword" 
user.skip_confirmation! 
user.save 
+2

就像一个小小的FYI,你可以把所有这些放在一个块中:'user = User.new {| u | u.email ='[email protected]'; u.password ='yourPassword'; u.skip_confirmation! } .save'。积木很有趣! – wulftone

3

如果你想有一个真正的轻量的方式来做到这一点,看看在你的终端注册后 - 轨输出显示了电子邮件发送后,您可以复制粘贴确认链接,确认帐户,然后继续测试。

原油,但有效。