6

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

我现在想添加使用 twitter 注册/登录的功能。我正在遵循设计 wiki中的指南

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

Validation failed: Email can't be blank

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

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

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

4

2 回答 2

3

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

于 2012-06-14T21:22:47.683 回答
3

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

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

def email_required?
  false
end 

这会覆盖 'validatable' 类中的方法,向代码表明 email 是一个可选字段,但保留所有可验证的内容,例如,你知道......确保你有一个实际的密码并且方便像这样的东西。你想保留的东西。

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

希望对疲惫的谷歌用户有所帮助。

于 2015-11-19T15:46:02.307 回答