有两个条件的集会查询

时间:2013-10-15 16:30:30

标签: ruby rally

我想使用ruby在集会中查询两个条件,查询字符串如下:

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

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

2 个答案:

答案 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与两个项相结合。