如何使用拉力赛ruby api创建包含必填字段的任务?

时间:2013-05-24 13:17:10

标签: ruby api rest rally

我正在尝试使用以下示例代码创建任务:

    fields = {}
    fields["Name"] ="test"
    fields["Workspace"] = "https://rally1.rallydev.com/slm/webservice/1.42/workspace/1234567.js"
    fields["Project"] = "https://rally1.rallydev.com/slm/webservice/1.42/project/1234567.js"
    fields["Owner"] = "https://rally1.rallydev.com/slm/webservice/1.42/user/1234567.js"
    fields["Estimate"] = '0.25'

    @rally.create(:task, fields)

运行时出现以下错误:

Error on request - https://rally1.rallydev.com/slm/webservice/1.42/Task/create.js - 
{:errors=>[
  "Validation error: Task.Project should not be null", 
  "Validation error: Task.WorkProduct should not be null"
], :warnings=>[
  "API status is Deprecated and will become Not Supported on 2014-05-08", 
  "Ignored JSON element Task.Project during processing of this request."
]}

错误似乎很奇怪。一方面,他们指出api忽略了JSON中的Task.Project,但是有一个验证错误,即Task.Project为空。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

如果没有与工作产品相关联(即故事或缺陷),则无法创建任务。任务从工作产品的项目继承其项目。这就是为什么忽略Project设置的原因。在创建任务时,您需要将任务关联到故事或缺陷:

fields = {}
fields["Name"] ="test"
fields["WorkProduct"] = "https://rally1.rallydev.com/slm/webservice/1.42/hierarchicalrequirement/1234568.js"
fields["Owner"] = "https://rally1.rallydev.com/slm/webservice/1.42/user/1234567.js"
fields["Estimate"] = '0.25'

@rally.create(:task, fields)

尝试一下它应该适合你。