Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何定制设计,以便仅在指定条件下进行验证?_Ruby On Rails_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 如何定制设计,以便仅在指定条件下进行验证?

Ruby on rails 如何定制设计,以便仅在指定条件下进行验证?,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,我已经设计了身份验证,但我没有使用Validable,我发送了请求,同时发送了一个类型。比如说 http://localhost:3000/signup/new?type=twitter 在上面的例子中,我使用了type=twitter,如果是twitter,我不想验证电子邮件,也就是说,不需要validates\u presence\u of:email,但如果我发送type=email,我想检查邮件是否存在,以及邮件是否已经发送,并检查指定的邮件是否有效?我该怎么做?请帮助我。您可以将以

我已经设计了身份验证,但我没有使用Validable,我发送了请求,同时发送了一个类型。比如说

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

在上面的例子中,我使用了
type=twitter
,如果是twitter,我不想验证电子邮件,也就是说,不需要
validates\u presence\u of:email
,但如果我发送type=email,我想检查邮件是否存在,以及邮件是否已经发送,并检查指定的邮件是否有效?我该怎么做?请帮助我。

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

if params[:type] == 'twitter'
  user.save(:validate => false)
但是,我不建议您这样做,因为这样您的数据库中就会有无效数据。如果你真的要求用户在使用Twitter登录时输入他的电子邮件,那将是最好的。整个挑战由瑞安·贝茨(Ryan Bates)负责解决

编辑:我做了一点调查,如果你检查Deave的源代码,你会注意到他们现在调用了这个方法


所以你要做的就是重写这个方法。你的用户模型看起来怎么样?您如何允许用户使用Twitter登录?如果您编辑您的问题并向我们展示,我们可能会进一步帮助您。

我认为@Ashitaka说您无论如何都应该要求用户的电子邮件,这是一个很好的观点

然而,对于您试图实现的目标,我将创建自己的验证器类。您可以看到如何实现这一点