问题描述
students.classroom_id IN ( SELECT id FROM classrooms WHERE name IN ('foo','bar') )
我尝试了以下组合
Student.arel_table[:classroom_id].in(
Classroom.where(
Classroom.arel_table[:name].in(
['foo','bar']
)
).select(:id)
)
但是当我对其执行 .to_sql
时,它返回
students.classroom_id IN ( NULL NULL NULL NULL )
任何帮助将不胜感激。
解决方法
如果没有 Arel,您确定无法实现这一目标吗?
Student.where(classroom: Classroom.where(name: ['foo','bar']))
,
我使用 FF 组合实现了目标输出:
subquery = Arel::Nodes::SqlLiteral.new Classroom.where(name: ['foo','bar'].select(:id).to_sql
Student.arel_table[:classroom_id].in(subquery)