Arel (Rails) 是否可以进行复杂的查询?

Arel (Rails) Is it possible to make complex query?

我需要使用 ANY/ALL 创建对数据库的查询。在研究 Arel 的可能性后,我发现 Arel 没有任何短命令(如 eqltgt 等),但它只有一个 Arel::SqlLiteral例子。对我来说,我如何使用这样的经典查询并不是那么明显:

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);

而不是示例中的查询。有人可以告诉我它应该是什么样子吗?

您可以使用 ActiveRecord 方法来完成,而无需使用 Arel:

sub_query = Model.select(:column_name).where(condition).to_sql
Model.
  select("column_name(s)").
  where("column_name operator ALL (#{sub_query})")