我目前正在为使用Rails 3.0.20的旧项目开发API
不幸的是,Rails 3在模型层上实现了验证,它们为Rails4进行了更改,因为通常这些验证属于控制器层。
在不修改模型/包含模块的情况下将验证移动到控制器的最佳方法是什么
那里有没有可以做到的宝石?比如“strong_pramaters”?那个问题是我必须修改模型,我宁愿把它们保留原样。
或者,编写可以在控制器中使用的自定义验证器的最佳方法是什么?
答案 0 :(得分:1)
Rails 4使用强参数https://github.com/rails/strong_parameters,您也可以在Rails 3项目中使用它,您只需使用strong_parameters gem
此Railscast可能对您有用http://railscasts.com/episodes/371-strong-parameters
修改
您可以保持模型逻辑不变,并使用以下命令跳过控制器中的质量分配检查:without_protection =>这里记录的真实选项http://apidock.com/rails/ActiveRecord/Base/new/class
您还可以使用以下命令有条件地运行验证:if和:unless(http://edgeguides.rubyonrails.org/active_record_validations.html),这样您就可以在模型上设置属性,如api_v2和tack:unless => “api_v2”到您要跳过的验证上。您所要做的就是在控制器中将该属性设置为true。