Вы уже пробовали просто пропустить :joins
часть вызова ActiveRecord? В моем тестовом случае ассоциации has_many
:include
будет использовать соединение, если ваши условия относятся к включенному имени таблицы. Например,
Comment.all :include => :post
выполнит всего два запроса: один для комментариев и один для их сообщений. Команда Rails говорит, что это лучшая производительность. Однако, если Rails обнаружит, что ваши условия требуют объединения,
Comment.all :include => :post, :conditions => ['post.approved = ?', true]
запустит один запрос, так как он вам нужен.
Разве ActiveRecord не такой умный?