使用设计跳过开发中的确认电子邮件
Posted
技术标签:
【中文标题】使用设计跳过开发中的确认电子邮件【英文标题】:skip confirmation e-mail in development with devise 【发布时间】:2011-11-20 11:41:40 【问题描述】:我正在使用设计,并且我希望能够在我处于开发模式时跳过确认电子邮件。由于我的应用程序在本地计算机上运行时无法发送电子邮件,因此我只会收到警告消息,提示您需要在访问应用程序之前进行确认。
【问题讨论】:
【参考方案1】:Devise 使用 ActionMailer 发送电子邮件。在测试模式下,ActionMailer 实际上不应该发送任何电子邮件。
查看this tutorial 了解有关 ActionMailer 和测试环境的说明。
因此,根据环境,您基本上可以关闭交付,同时不会影响您的实际测试。您只需在 environments/test.rb
文件中指定该选项即可。
【讨论】:
我在测试文件中看到它有以下代码: # Tell Action Mailer 不要将电子邮件发送到现实世界。 # :test 传递方法在 # ActionMailer::Base.deliveries 数组中累积发送的电子邮件。 config.action_mailer.delivery_method = :test 我是否应该将该代码 sn-p 复制到 config/environments/development.rb 文件中 嗯,即使我确实关闭了交付,但我仍然不需要一种方法来满足可确认模块,因为我仍然会遇到需要确认的相同错误。 如果你的意思是,就测试而言,一种满足它的方法,我会用模拟对象伪造确认,或者只是从数据库中提供确认码,因为发送实际电子邮件在测试中并不重要。重要的是确认机制有效,对吧?也就是说,当通过确认 URL 显示正确的确认代码时,您想知道在 DB 中翻转了某种confirmed
标志吗?
抱歉,如果我不清楚我想在开发中完全跳过确认步骤,但在生产中仍然可以发送确认电子邮件。现在如果我想注册一个用户我不能因为可确认的模块,而且我不知道如何跳过开发中的那一步。
我刚刚在控制台中编辑了用户,以绕过设计的要求,这给了我想要的结果。【参考方案2】:
在 Rails 3 中,您可以使用“拦截器”重新路由您的开发电子邮件,如 Railscast 206 中所述。
【讨论】:
【参考方案3】:Devise 还有一个方法skip_confirmation!,您可以在保存模型之前调用它以避免发送邮件。它只是设置confirmed_at
属性,从而导致跳过邮件发送。
【讨论】:
【参考方案4】:试试 Ryan Bates 的 Letter Opener gem
https://github.com/ryanb/letter_opener
它将在浏览器中打开电子邮件而不发送它。如果您正在开发中,您不希望跳过一些东西,因为有些东西会被遗漏/遗忘。
【讨论】:
不确定这里的提问者,但我个人正在用大量数据填充一个大型应用程序。我刚刚在浏览器中打开了 600 多个标签,因为我确实使用了开信器。我同意在大多数情况下你不想跳过,在这种情况下我定义。需要跳过。【参考方案5】:或者您可以在您的开发环境中尝试MailCatcher。
【讨论】:
【参考方案6】:将您的模型用于设计。通常它的user.rb。并删除或评论配置comfirmable。 这将阻止确认过程
【讨论】:
【参考方案7】:就这么简单
user=User.new
user.email="you@email.id"
user.password="yourPassword"
user.skip_confirmation!
user.save
【讨论】:
仅供参考,您可以将所有内容放在一个块中:user = User.new |u| u.email = 'you@email.id'; u.password = 'yourPassword'; u.skip_confirmation! .save
。积木很有趣!【参考方案8】:
如果您想要一种真正轻量级的方式来执行此操作,请在注册后查看您的终端 - rails 输出显示已发送的电子邮件,您可以复制粘贴确认链接,确认帐户,然后继续测试。
粗鲁,但有效。
【讨论】:
【参考方案9】:类似于letter_opener
gem(由上面的John Beynon 推荐)有一个名为mailcatcher
的gem,它适用于SMTP 级别。
基本上,您在 Rails 应用程序上配置 SMTP 以指向在本地机器上运行 mailcatcher 的端口,并且您在其他端口上有 mailcatcher 浏览器来读取电子邮件
更多信息https://github.com/sj26/mailcatcher
【讨论】:
以上是关于使用设计跳过开发中的确认电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Rails 中的电子邮件确认,无需使用任何现有的身份验证 gem/插件
(NoMethodError:main:Object 的未定义方法“电子邮件”)。与 Mandrill 和 Mailchimp 确认设计后发送欢迎电子邮件