我想使用 ruby 查询拉力赛中的两个条件,查询字符串如下:
(Name = \"#{iteration_name}\")" and "(Project.Name = \"#{project_name}\")
但无论这两个条件之间有什么算子,反弹都会忽略左边的部分。有谁知道如何获得正确的查询表达式?
由于您使用的是(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}"
nickm 已经通过示例提供了一个很好的答案。
此外,请注意,额外的括号集仅适用于将两个术语与一个 AND 组合。
((A)AND(B)AND(C)) 不起作用
因此,要使用三个或更多,您必须添加更多:
(((A)AND(B))AND(C))
(((A)AND(B))AND((C)AND(D)))
依此类推,只有在一组括号中带有 AND 的两个术语。