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"