Вы должны быть в состоянии сделать это, начиная запрос с конца треков, так как это результат, который вы хотите вернуть:
user = User.first
Track.joins(events: :acknowledgements).where(complete: true, events: { acknowledgements: { user_id: user.id })
Здесь вы стремитесь загрузить события треков и их подтверждения производительности.затем (предполагая, что этот столбец существует), проверьте, что дорожка завершена, и подтверждения событий содержат вашего пользователя.
Причина, по которой вы проверяете user_id
в таблице acknowledgements
, состоит в том, чтобы избежать предварительной загрузкиusers
в запросе для повышения производительности.
Надеюсь, что это поможет - дайте мне знать, как у вас идут дела или если у вас есть какие-либо вопросы.