• #1 楼 @xiaohui_zhangxh 问题其实是我借了 ID 问的 - -,就是我有多个 contests 和 problems,一个 problem 可能会出现在多个 contests 里面,然后每个 contest 会对他的 problems 打上 A, B, C, ... 这样的 index。

    这个 index 是存在 contest_problems 里面的,所以 includes(:contests) 肯定是有问题的。即使不是说这个问题, includes(:contests_problems) 会生成一个:

    SELECT `contest_problems`.* FROM `contest_problems`  WHERE `contest_problems`.`problem_id` IN (...)
    

    但事实上我需要的是:

    SELECT `contest_problems`.* FROM `contest_problems`  WHERE `contest_problems`.`contest_id` = 1 AND `contest_problems`.`problem_id` IN (...)