在加入时用 Arel 连接变量和字符串

Concatenate variable and string with Arel on join

我尝试使用 Arel 连接两个表以生成一些 SQL,如下所示:

[...]
INNER JOIN "nodes" ON "nodes"."id" LIKE "jobs"."ancestry" || '%'
[...]

匹配任何以 node ID 之一开头的 job。当我 运行 普通 SQL 有效时,现在我尝试用 Arel 构建它:

node = Node.arel_table
job = Job.arel_table

node.join(job).on(node[:id].matches("_______%"))

现在我找不到任何如何为 matches 获取正确字符串的方法,即使我尝试:

"\"nodes\".\"ancesty\" || %"

完整的字符串将被转义。有什么方法可以将原始 SQL 传递给不会被转义的 Arel matches 方法,或者有任何其他方法可以使它与 Arel 一起使用吗?

似乎 Arel::Nodes::SqlLiteral 完成了工作:

node = Node.arel_table
job = Job.arel_table

lit = Arel::Nodes::SqlLiteral.new("_______%") 

node.join(job).on(node[:id].matches(lit))