Я думаю, что две вещи проблематичны c в вашем запросе:
- оператор
joins
- операторы
where
, которые используют ссылку на таблицу ( пользователи), которые не были присоединены
Попробуйте изменить joins
на left_joins
, например, и обновите условие where
, чтобы оно не зависело от присоединения пользователей. стол - который может вызвать другие проблемы.
@discussions = Discussion.
left_joins(:posts,:comments).
where('? IN (posts.user_id, comments.user_id)', current_user.id)
group('discussions.id').
order('GREATEST(MAX(posts.created_at), MAX(comments.created_at)) DESC')
Действительно, с помощью обычного INNER JOIN (что и делает метод joins
под капотом), вы будете получать только те обсуждения, для которых есть и комментарий, и публикация вашего пользователя, которая это не то, что вы хотите сделать.