Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 Rails 3:将参数验证放入API的控制器_Ruby On Rails_Api_Validation - Fatal编程技术网

Ruby on rails Rails 3:将参数验证放入API的控制器

Ruby on rails Rails 3:将参数验证放入API的控制器,ruby-on-rails,api,validation,Ruby On Rails,Api,Validation,我目前正在为一个使用Rails 3.0.20的旧项目开发一个API 不幸的是,Rails 3在模型层上实现了验证,他们对Rails4进行了更改,因为这些验证通常属于控制器层 在不修改模型/包括模块的情况下,将验证转移到控制器中的最佳方式是什么 有什么宝石可以做到这一点吗?比如说“强实践”吗?这个问题是我必须修改模型,我宁愿让它们保持原样 或者,编写可在控制器中使用的自定义验证器的最佳方法是什么?Rails 4使用强参数,您也可以在Rails 3项目中使用,您只需使用强参数即可 这辆火车可能对你有

我目前正在为一个使用Rails 3.0.20的旧项目开发一个API

不幸的是,Rails 3在模型层上实现了验证,他们对Rails4进行了更改,因为这些验证通常属于控制器层

在不修改模型/包括模块的情况下,将验证转移到控制器中的最佳方式是什么

有什么宝石可以做到这一点吗?比如说“强实践”吗?这个问题是我必须修改模型,我宁愿让它们保持原样


或者,编写可在控制器中使用的自定义验证器的最佳方法是什么?

Rails 4使用强参数,您也可以在Rails 3项目中使用,您只需使用强参数即可

这辆火车可能对你有帮助

编辑

您可以保持模型逻辑不变,并使用:without_protection=>true选项跳过控制器中的质量分配检查,如本文所述


此外,您还可以使用:if和:除非()有条件地运行验证,这样您就可以在您的模型上设置一个属性,如api\u v2和tack:除非=>“api\u v2”到要跳过的验证上。您只需在控制器中将该属性设置为true。

Rails 4不会将验证移到控制器中。他们只是在控制器内部检查是否允许给定的参数。Rails 4的模型中仍然存在验证,但他们将模型属性移动到了控制器。strong_参数允许您选择允许传递给模型的参数。模型验证和之前一样,它们确保数据库的完整性啊,好的,我明白了,谢谢你的解释!是的,我已经找到了。问题是这个项目有多个API。当我开始处理模型参数保护时,其他API可能不再工作了。也许我的问题用词不对。在不接触模型的情况下,向控制器添加参数验证的最佳方法是什么?只是简单的自定义验证器我正在寻找验证请求参数,强参数仅检查和允许参数它不允许您检查值是否大于或值是否为字符串等。知道如何执行吗?强参数的目的只是指定可以修改哪些字段,而不是如何修改字段。关于模型中的验证逻辑,请参见此处