1

我想使用 ruby​​ 查询拉力赛中的两个条件,查询字符串如下:

(Name = \"#{iteration_name}\")" and "(Project.Name = \"#{project_name}\")

但无论这两个条件之间有什么算子,反弹都会忽略左边的部分。有谁知道如何获得正确的查询表达式?

4

2 回答 2

2

由于您使用的是(Name = \"#{iteration_name}\")我假设您查询迭代对象。

请使用一组额外的括号:

query.query_string = "((Name = \"#{iteration_name}\")AND(Project.Name = \"#{project_name}\"))"

这是一个代码片段:

iteration_name = "i10"
project_name = "Team Group 1"

rally = RallyAPI::RallyRestJson.new(config)

query = RallyAPI::RallyQuery.new()
query.type = :iteration   
query.fetch = "Name,Project"
query.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/1111.js" }
query.project_scope_up = false
query.project_scope_down = false
query.order = "Name Asc"
query.query_string = "((Name = \"#{iteration_name}\")AND(Project.Name = \"#{project_name}\"))"

results = rally.find(query)
puts "iteration name: #{results.first.Name} project name:  #{results.first.Project.Name}"
于 2013-10-15T16:59:02.370 回答
0

nickm 已经通过示例提供了一个很好的答案。

此外,请注意,额外的括号集仅适用于将两个术语与一个 AND 组合。

((A)AND(B)AND(C)) 不起作用

因此,要使用三个或更多,您必须添加更多:

(((A)AND(B))AND(C))
(((A)AND(B))AND((C)AND(D)))

依此类推,只有在一组括号中带有 AND 的两个术语。

于 2018-10-01T12:53:22.810 回答