1

我已经设计了身份验证,但我没有使用可验证的,我发送了请求,然后我发送了一个类型。例如

http://localhost:3000/signup/new?type=twitter 

在上面显示的我使用type=twitter过的情况下,如果是 twitter,我不想验证电子邮件,即不需要,validates_presence_of :email但如果我发送 type=email,那么我想检查邮件是否存在以及邮件是否尚未接收并检查指定的邮件是否有效?我怎样才能做到这一点?请帮我。

4

2 回答 2

2

您可以将以下内容添加到您的控制器:

if params[:type] == 'twitter'
  user.save(:validate => false)

但是,我不建议您这样做,因为这样您的数据库中就会有无效数据。如果您在使用 Twitter 登录时实际要求用户输入他的电子邮件,那将是最好的。Ryan Bates 在关于omniauth 的这一集中解决了整个挑战。

编辑:我调查了一下,如果你检查设计的源代码,你会注意到他们现在有这个名为email_required 的方法?.

因此,您所要做的就是覆盖该方法。你的用户模型看起来如何?您如何允许用户使用 Twitter 登录?如果您编辑您的问题并向我们展示,我们可能会为您提供更多帮助。

于 2012-11-08T14:07:01.620 回答
0

我认为@Ashitaka 有一个很好的观点,他说无论如何你都应该询问用户的电子邮件。

但是,对于您要实现的目标,我将创建自己的验证器类。您可以在此 rails guide 中了解如何实现这一点。

于 2012-11-08T14:15:33.817 回答