使用 Twitter 进行 Devise/Omniauth 登录 - 验证失败:电子邮件不能为空



按照本教程,我使用 devise 在 rails 应用程序中设置了身份验证。它工作得很好,用户可以注册,然后使用电子邮件和密码登录。

我现在想添加使用推特注册/登录的功能。我正在遵循设计维基的指南

维基中的例子使用Facebook,我已将其更改为使用twitter。它设法转到推特并请求授权,所以我相信我有基本的工作。但是,一旦它返回到我的应用程序,我就会收到以下错误。

Validation failed: Email can't be blank

我想这是因为我没有提供电子邮件地址。

我使用的代码与教程中的代码相同(除了将 facebook 交换到 twitter),所以我没有发布任何示例。如果您想查看任何内容,请告诉我。

我对rails很陌生,所以我不确定如何调试。关于我应该如何继续的任何建议?

嘿,

只需从用户模型 n 中删除":validatable",它将允许空白电子邮件。

我知道

这个问题很老,但它仍然会出现,快速的谷歌搜索发现了一些非常糟糕的建议。所以在这里...

使电子邮件可选的正确方法不是从用户模型中删除可验证接口,只需将其添加到其中:

def email_required?
  false
end 

这覆盖了"validatable"类中的方法,向代码发出电子邮件是可选字段的信号,但保留了可验证包含的所有好东西,比如,你知道......确保您有一个实际的密码和方便的东西。你想保留的东西。

当然,如果你需要任何真正古怪的东西,你应该看看可验证接口的源代码,并复制相关的验证并根据需要进行调整,但对于 99.99% 的人来说,我上面提供的代码可能就足够了。

希望能帮助疲惫的谷歌人。

最新更新