使用twitter设计/ omniauth登录 - 验证失败:电子邮件不能为空

时间:2012-04-29 18:36:33

标签: ruby-on-rails ruby-on-rails-3 devise omniauth twitter-oauth

我使用设计在this tutorial之后在rails应用中设置了身份验证。 它工作得很好,用户可以注册,然后使用电子邮件和密码登录。

我现在想添加使用twitter注册/登录的功能。我正在关注devise wiki

的指南

wiki中的示例使用facebook,我已将其更改为使用twitter。它设法进入twitter并请求授权,所以我确信我的基础工作正常。但是,一旦它返回到我的应用程序,我会收到以下错误。

Validation failed: Email can't be blank

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

我使用的代码与教程中的代码相同(除了将facebook更换为推特),因此我不会发布任何样本。如果你想看到任何东西,请告诉我。

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

2 个答案:

答案 0 :(得分:3)

嘿只是从用户模型中删除“:validatable”n它将允许空白email.worked为我!!

答案 1 :(得分:2)

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

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

def email_required?
  false
end 

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

当然,如果您需要任何非常古怪的东西,您应该查看可验证界面的源代码并复制相关验证并根据需要进行调整,但对于99.99%的人,我提供的代码以上就足够了。

希望这有助于厌倦谷歌搜索者。