公共表表达式是不同RDBMS(PostgreSQL、MySQL、Oracle、SQLite3等)中的一种相当常见的做法,用于跨多个查询组件或出于某些其他目的多次执行相同的计算
我发现旧的gem postgres_ext有这样的功能。但是它没有被维护。而且它是Postgres特有的
有一些关于它的老问题,但是它们是关于特定的rails版本或特定的RDBMS或关于Arel
的
- How do you use the postgresql WITH in activerecord?
- Rails 5.2.2 (active record) WITH statement
- Postgres Common Table Expression query with Ruby on Rails
- Arel and CTE to Wrap Query
- Multiple CTEs with Arel
在Rails中使用WITH
子句是否可以通过一些常见的方式使用AR?
1条答案
按热度按时间zzwlnbp81#
轨道7.1 x introduce x x
with
方法它返回
ActiveRecord::Relation
定义公用表表达式后,可以使用自定义
FROM
值或JOIN
来引用它x一个一个一个一个x一个一个二个x
使用
Arel
不仅可以传递AR,还可以传递SQL文本。注意:应该非常小心以避免SQL注入漏洞。此方法不应该与包含未净化输入的不安全值一起使用
要添加多个CTE,只需传递多个键值对
或链接多个
.with
调用