如何将ARRAY_TO_STRING和ARRAY_AGG转换为arel?

时间:2017-06-01 18:59:58

标签: ruby-on-rails postgresql

我有一个类似于以下内容的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_aggarray_to_string。我检查过arel文档,但我没有看到特定的匹配方法来计算出这样的查询。有谁遇到过这个问题?我可以使用一些帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

转换它的方法如下:

Arel::Nodes::NamedFunction.new 'array_agg', [expression goes here]
Arel::Nodes::NamedFunction.new 'array_to_string', [array_input, Arel::Nodes::Quoted.new(',')]