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