Исходя из определения отношения в ваших моделях, ниже должно работать:
CertificatesUser.joins(:user, :certificate)
.select('user_id, users.name, users.email, certificates.name')
.group_by(&:user_id)
Вы используете .group_by(&:user_id)
для группировки выбранных данных на основе user_id в массиве json, как показано ниже:
Образец результата:
[1, [{ user_id: 1, certificate_id: 29, ....},{ user_id: 1, certificate_id: 22, ....}] ,
2, [{ user_id: 2, certificate_id: 34, ....},{ user_id: 2, certificate_id: 56, ....}] ,
3, [{ user_id: 3, certificate_id: 29, ....},{ user_id: 3, certificate_id: 12, ....}] ]
Примечание:
Вы можете добавлять поля из пользователей или сертификатов так, как вам нравится, но убедитесь, что вы используете их в множественном числе , а не в единственном числе .