Post de mídia incorporada permite conflitos de grupos com o fluxo de moderação de posts: desocultar falha com ActiveRecord::RecordInvalid

Há um conflito entre “Grupos permitidos para postagens com mídia incorporada” e o fluxo de trabalho de desocultar postagens.

Se uma postagem for criada por um usuário que não está nos grupos de mídia permitidos e, posteriormente, for ocultada (via sinalizações), quando um moderador editar a postagem oculta e adicionar mídia, a tentativa de desocultar a postagem falhará com:

ActiveRecord::RecordInvalid
Validation failed: Desculpe, você não pode incorporar itens de mídia em uma postagem.

O processo de desocultar executa novamente a validação de mídia usando as permissões do autor original, e não as do moderador, fazendo com que a desocultação falhe.


Passos para Reproduzir

  1. Configure Grupos permitidos para postagens com mídia incorporada, excluindo usuários de baixa confiança.
  2. Use um usuário não incluído nos grupos permitidos para criar uma postagem.
  3. Faça com que a postagem seja ocultada por sinalizações do sistema. (Não tenho certeza aqui — parece que as postagens só podem ser ocultadas por sinalizações, não manualmente pela equipe? A equipe pode ocultar tópicos, mas não postagens individuais. Por favor, corrija-me se eu estiver errado.)
  4. Um moderador edita a postagem oculta e insere mídia (imagens/vídeos).
  5. Tente desocultar a postagem (seja na interface do usuário ou via post.unhide! no console Rails).
  6. A operação falha com:

ActiveRecord::RecordInvalid Validation failed: Desculpe, você não pode incorporar itens de mídia em uma postagem.