Кто-нибудь может это объяснить?
Project.includes([:user, :company])
Это выполняет 3 запроса, один для извлечения проектов, один для извлечения пользователей для этих проектов и один для извлечения компаний.
Project.select("name").includes([:user, :company])
Выполняет 3 запроса и полностью игнорирует бит выбора.
Project.select("user.name").includes([:user, :company])
Выполняет 1 запрос с правильными левыми соединениями. И все же полностью игнорирует выбор.
Мне кажется, что рельсы игнорируют select with includes. Хорошо, но почему, когда я помещаю связанную модель в select, она переключается с выдачи 3 запросов на выдачу 1 запроса?
Обратите внимание, что 1 запрос - это то, что я хочу, я просто не могу себе представить, что это правильный способ его получить или почему он работает, но я не уверен, как еще получить результаты в одном запросе (.joins кажется, использует только INNER JOIN, которого я действительно не хочу, и когда я вручную специфицирую условия соединения для присоединения к камню поиска, мы используем freaks, поскольку он пытается повторно добавить объединения с тем же именем).