A user could create a “group”, which other users could join in. Each group has its own admin and moderators so on and could do something like creating posts, inviting users, etc.
I think “has_many through” should be used here, but not sure about the authorization, since the role is based on different groups. The roles set up in CanCan seem not fit into it, admin is just for one group, not the whole site.
Seems like confusion between a user and its role.
A “Group” has many “users”. A “user” has one (or more) “role(s)” (admin) toward a group “ALPHA”. A “user” might have another role (“listener”) on another group “DELTA”.
Admin is a role, Moderator and listener are roles just the same.