Ruby on rails 3 如何获取深度嵌套的错误以访问我的RESTAPI?
首先,一些背景: 我有一个Ruby on rails 3 如何获取深度嵌套的错误以访问我的RESTAPI?,ruby-on-rails-3,validation,rest,Ruby On Rails 3,Validation,Rest,首先,一些背景: 我有一个公司模型,一个项目模型和一个任务模型。项目属于公司,任务属于项目 项目模型包含几个属性:公司id、日期这些属性唯一地标识项目 我让用户通过API创建一个任务,通过发布到包含识别项目所需的详细信息的URL。例如: POST /projects/<comnpany_name>/<date>/tasks/ 我希望通过返回一个未保存的Company对象并设置错误,这将是传达错误的一种好方法(这类似于出现验证错误时rails的工作方式) 问题是,在公司对
公司
模型,一个项目
模型和一个任务
模型。项目属于公司,任务属于项目
项目
模型包含几个属性:公司id、日期
这些属性唯一地标识项目
我让用户通过API创建一个任务,通过发布到包含识别项目所需的详细信息的URL。例如:
POST /projects/<comnpany_name>/<date>/tasks/
我希望通过返回一个未保存的Company对象并设置错误,这将是传达错误的一种好方法(这类似于出现验证错误时rails的工作方式)
问题是,在公司对象上调用valid?
时,它删除了我在那里写的错误,并添加了常规验证错误(在这种情况下,公司不能为空)
还有一个额外的问题…
还有一个概念上的问题:因为我通过提供用于创建实际属性的参数来创建模型,所以它们并不总是很好地映射到错误[:attr]散列。在本例中,情况还不错,我使用company字段作为company name
参数,但我想当提供给create方法的参数与模型属性不太相似时,情况会变得更糟
那么,解决这一问题的首选方法是什么?这种方法基本上有什么问题吗?如果是,首选的方法是什么?关于覆盖默认rails验证错误消息,您需要这样编写验证约束:
validates_presence_of :name, :message => "must be a valid name"
我认为最好避免这种嵌套,并坚持使用较浅的API
validates_presence_of :name, :message => "must be a valid name"