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