我在两个模型之间有关系,Registers和Competitions。我有一个非常复杂的动态查询正在构建中,如果条件合适,我需要将注册记录限制为仅其竞赛父级满足特定条件的那些。为了在没有从竞争表中选择的情况下做到这一点,我想了一些类似...
Register.where("competition_id in ?", Competition.where("...").collect {|i| i.id})
这会产生这个 SQL:
SELECT "registers".* FROM "registers" WHERE (competition_id in 1,2,3,4...)
我不认为 PostgreSQL 喜欢 in 参数没有被括号包围的事实。如何将注册外键与竞赛 ID 列表进行比较?