В Rails есть 2 версии include: Одна, которая создает большой запрос с объединениями (второй из двух ваших запросов и, следовательно, более вероятно, приведет к неоднозначным ссылкам на столбцы, и другая, которая избегает объединений в пользу отдельного запроса для каждой ассоциации.
Rails решает, какую стратегию использовать, исходя из того, считает ли он, что ваши условия, порядок и т. Д. Относятся к включенным таблицам (поскольку в этом случае требуется версия объединения). Где условие - это фрагмент строки, который эвристический не очень сложный - я, кажется, вспоминаю, что он просто сканирует условия для всего, что может выглядеть как столбец из другой таблицы (например, foo.bar), поэтому наличие литерала этой формы может дурак.
Вы можете либо квалифицировать имена столбцов, чтобы не имело значения, какая стратегия включает в себя, или вы можете использовать preload / eager_load вместо включений. Они ведут себя аналогично включениям, но вынуждают использовать конкретную стратегию включения, а не пытаться угадать, что является наиболее подходящим.