我有一个类似于以下内容的Arel语句:
vulns.project(vulns[:id],
vulns[:cve_id],
vulns[:severity],
vulns[:published_on],
vulns[:description],
"ARRAY_TO_STRING((ARRAY_AGG(#{releases[:version]} ORDER BY #{releases[:released_on]} DESC))[1:10], ', ')")
.join(releases_vulns)
.on(releases_vulns[:vulnerability_id].eq(vulns[:id]))
我遇到的最棘手的部分是array_agg
和array_to_string
。我检查过arel文档,但我没有看到特定的匹配方法来计算出这样的查询。有谁遇到过这个问题?我可以使用一些帮助。谢谢。
答案 0 :(得分:1)
转换它的方法如下:
Arel::Nodes::NamedFunction.new 'array_agg', [expression goes here]
Arel::Nodes::NamedFunction.new 'array_to_string', [array_input, Arel::Nodes::Quoted.new(',')]