如果暂时删除电子邮件的唯一性,我 运行 会遇到问题吗?
Will I run into problems if temporarily removing Uniqueness on Emails?
所以我目前第一次使用 ActionMailer / SendGrid,试图配置从应用程序发送的一些电子邮件。到目前为止一切正常,但问题是在我的种子文件中我有很多假冒用户和假冒电子邮件帐户。这显然不是很好,因为在我测试东西时将电子邮件发送到错误的地址时,它会破坏我的 SendGrid 声誉。例如,我尝试添加 Devise 的“:confirmable”,突然 运行 db:seed 我所有的假用户都收到了电子邮件
作为一个潜在的解决方案,我想我暂时允许电子邮件不是唯一的,然后让每个用户都有相同的电子邮件地址(一个我注册的实际地址,所以它们实际上会被发送)。所以我继续删除了设计的“:validatable”,并准备进行迁移以更改用户 table:[=12 上此索引的最后一部分(将 true 更改为 false) =]
t.index ["email"], name: "index_users_on_email", unique: true
但在进行进一步研究后,我遇到了一些意见,认为一旦我想将其改回原来的样子,这可能会把事情搞砸。
您会如何解决这个问题?这里最好的行动方案是什么?我很高兴收到您的反馈:)
在这种情况下,我会保留唯一验证并有一个有效的电子邮件地址用于测试目的。
您仍然可以使用 + 号生成唯一的电子邮件地址,并在后面加上一个唯一的标识符。
为清楚起见:
创建一个有效的电子邮件帐户,例如 mytestuser@gmail.com。
当您创建用户时,为他们分配一个 mytestuser+uniquecode@gmail.com
的电子邮件
为了邮件投递,+ 号以外的任何内容都将被忽略,因此所有邮件都将发送至 mytestuser@gmail.com,但您的每个用户仍将拥有唯一的电子邮件地址。
如果您关心的是正确配置 SendGrid,则需要确保使用您拥有的真实电子邮件地址。但我怀疑您的问题更多是关于构建和检查应用程序逻辑和 ActionMailer。我真的建议不要删除约束,因为它一定会在某个时候回来咬你。
我所做的是配置 Rails 在本地和开发上使用不同的邮件服务而不是 SendGrid(然后我只为 qa 和 live 环境启用)。这让我可以在构建应用程序和发送可能损坏的电子邮件时使用 MailTrap! MailTrap 从不向指定地址发送电子邮件 - 它只是接收您的应用程序发送的电子邮件并将它们存储在一个收件箱中,然后您可以检查您的电子邮件是否已发送以及它们的外观,无论指定的收件人电子邮件地址如何. (其他类似的服务可用:Mailinator 就是其中之一。)这使您可以在构建时使用随机电子邮件地址,从而保留您的唯一性约束,而无需将电子邮件发送到随机地址。
为此,请在 config/environments/development.rb
和 config/environments/production.rb
中设置不同的邮件配置。 (测试设置为默认设置,电子邮件处于测试模式,因此无论如何都不会发送到现实世界。)
所以我目前第一次使用 ActionMailer / SendGrid,试图配置从应用程序发送的一些电子邮件。到目前为止一切正常,但问题是在我的种子文件中我有很多假冒用户和假冒电子邮件帐户。这显然不是很好,因为在我测试东西时将电子邮件发送到错误的地址时,它会破坏我的 SendGrid 声誉。例如,我尝试添加 Devise 的“:confirmable”,突然 运行 db:seed 我所有的假用户都收到了电子邮件
作为一个潜在的解决方案,我想我暂时允许电子邮件不是唯一的,然后让每个用户都有相同的电子邮件地址(一个我注册的实际地址,所以它们实际上会被发送)。所以我继续删除了设计的“:validatable”,并准备进行迁移以更改用户 table:[=12 上此索引的最后一部分(将 true 更改为 false) =]
t.index ["email"], name: "index_users_on_email", unique: true
但在进行进一步研究后,我遇到了一些意见,认为一旦我想将其改回原来的样子,这可能会把事情搞砸。
您会如何解决这个问题?这里最好的行动方案是什么?我很高兴收到您的反馈:)
在这种情况下,我会保留唯一验证并有一个有效的电子邮件地址用于测试目的。
您仍然可以使用 + 号生成唯一的电子邮件地址,并在后面加上一个唯一的标识符。
为清楚起见:
创建一个有效的电子邮件帐户,例如 mytestuser@gmail.com。
当您创建用户时,为他们分配一个 mytestuser+uniquecode@gmail.com
的电子邮件为了邮件投递,+ 号以外的任何内容都将被忽略,因此所有邮件都将发送至 mytestuser@gmail.com,但您的每个用户仍将拥有唯一的电子邮件地址。
如果您关心的是正确配置 SendGrid,则需要确保使用您拥有的真实电子邮件地址。但我怀疑您的问题更多是关于构建和检查应用程序逻辑和 ActionMailer。我真的建议不要删除约束,因为它一定会在某个时候回来咬你。
我所做的是配置 Rails 在本地和开发上使用不同的邮件服务而不是 SendGrid(然后我只为 qa 和 live 环境启用)。这让我可以在构建应用程序和发送可能损坏的电子邮件时使用 MailTrap! MailTrap 从不向指定地址发送电子邮件 - 它只是接收您的应用程序发送的电子邮件并将它们存储在一个收件箱中,然后您可以检查您的电子邮件是否已发送以及它们的外观,无论指定的收件人电子邮件地址如何. (其他类似的服务可用:Mailinator 就是其中之一。)这使您可以在构建时使用随机电子邮件地址,从而保留您的唯一性约束,而无需将电子邮件发送到随机地址。
为此,请在 config/environments/development.rb
和 config/environments/production.rb
中设置不同的邮件配置。 (测试设置为默认设置,电子邮件处于测试模式,因此无论如何都不会发送到现实世界。)