Pode ser uma mudança muito mais complexa, dependendo de como o guardião está envolvido nos diferentes elementos deste processo, mas outra opção, que também dependeria de 3, é:
- Adicione uma propriedade booleana aos próprios convites para contornar a aprovação do usuário. Esta propriedade estaria desativada por padrão e seria exposta apenas na interface do usuário de criação de convite quando
must_approve_usersestiver habilitado.
Editar: Na verdade, olhando novamente para o código que David referenciou, acho que o guardião não está envolvido de forma alguma na decisão de se um usuário convidado precisa ser aprovado. Parece que essa parte seria uma substituição direta de invite.invited_by.staff? por algo como invite.bypass_approval?