繁体   English   中英

通过Twitter进行devise / omniauth登录-验证失败:电子邮件不能为空

[英]devise/omniauth login with twitter - validation failed: email can't be blank

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

我现在想添加使用Twitter进行注册/登录的功能。 我正在遵循devise Wiki上的指南

Wiki中的示例使用facebook,我将其更改为使用twitter。 它设法进入Twitter并请求授权,所以我确定我的基本知识正在起作用。 但是,一旦返回我的应用程序,我将收到以下错误。

Validation failed: Email can't be blank

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

我使用的代码与教程中的代码相同(除了将Facebook交换为Twitter),因此我不会发布任何示例。 如果您想看任何东西,请告诉我。

我是Rails的新手,所以不确定如何调试。 关于如何继续的任何建议?

嘿,只需从用户模型n中删除“:validatable”,它将允许使用空白email。为我工作!

我知道这个问题很旧,但是仍然出现,并且通过快速Google搜索发现了一些非常糟糕的建议。 所以在这里...

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

def email_required?
  false
end 

这会覆盖“ validatable”类中的方法,向代码发出电子邮件是可选字段的信号,但会保留所有可验证的好东西,例如,您知道...确保您拥有实际的密码并且方便像这样的东西。 您想保留的东西。

当然,如果您需要任何真正令人毛骨悚然的内容,则应查看validateatable接口的源代码,并复制相关的验证并根据需要进行调整,但对于99.99%的人来说,我上面提供的代码可能是足够。

希望可以帮助疲倦的Google员工。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM