【发布时间】:2016-10-07 19:13:31
【问题描述】:
AREL README 简要介绍了 CTE,但没有提及如何处理 CTE 中的显式列列表。例如。像这样的 CTE:
WITH my_query (col1, col2, col3, col4) AS (
SELECT a, b, a, b FROM my_table
)
我能够使用复杂的 SqlLiteral 生成上述内容,但有更好的方法吗?
示例解决方案:
cte_table = Arel::Table.new(:source_qry)
cte_qry = Arel::Nodes::SqlLiteral.new("source_qry (col1, col2, col3, col4)")
user_qry = Arel::Nodes::SqlLiteral.new("(SELECT a, b, a, b FROM my_table)")
cte_table_qry = Arel::Nodes::As.new(cte_qry, user_qry)
cte_table.project(%w(col1 col2)).with(cte_table_qry)
【问题讨论】:
标签: ruby-on-rails common-table-expression arel