Я не совсем уверен, каково ваше требование. Но если вы думаете о сценарии использования, например: пользователь A приглашает Not_yet_a_user_B. И B получает уникальный URL-адрес регистрации. B нажимает на это и регистрирует себя на сайте, а сайт записывает в свою базу данных, что B был приглашен A.
Вы могли бы реализовать что-то вроде этого.
Иметь модель (и базовую таблицу), которая называется Приглашения с полями (код приглашения: строка, inviter_user_id: целое число). Пользователь может иметь одно (однозначное сопоставление ... о, вы можете просто сохранить код приглашения в таблице пользователей) Приглашения. А в модели User есть поле с именем sent_by_user_id: integer).
Когда A отправит запрос на регистрацию в B, он будет выглядеть так: www.site.com/signup?invitation_code=ABC. Таким образом, в вашем действии регистрации вы можете проверить параметр приглашения_кода, а затем сравнить его с таблицей приглашений, чтобы выяснить, кто пригласил Б. Затем запишите этот идентификатор пользователя в пригласил Б_приемника Б. *
Тогда вы можете сказать, кого кто пригласил. И сколько людей (и кто они) были приглашены данным пользователем.