Вот очень быстрый набор моделей, которые должны соответствовать вашим требованиям:
class User < ActiveRecord::Base
has_many :group_memberships
has_many :groups, :through => :group_memberships
end
class GroupMembership < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :group
end
class Role < ActiveRecord::Base
has_many :group_memberships
end
class Group < ActiveRecord::Base
has_many :group_memberships
has_many :users, :through > :group_memberships
end
По сути, есть таблица соединений, в которой есть идентификатор пользователя, группы и роли. Я оставлю миграции в качестве упражнения для спрашивающего