Richie
(Richie Rich)
12 Septiembre, 2025 07:39
1
Cuando se elimina a un usuario rechazando su primera publicación, se le envía un correo electrónico con el asunto Tu cuenta ha sido eliminada.
Hay un error en el cuerpo/contenido del correo electrónico, parece que se muestra una especie de sintaxis de hash de Ruby en la sección central del correo electrónico:
Hola,
Este es un mensaje automático de NOMBRE DEL SITIO para informarte que la cuenta de usuario asociada con esta dirección de correo electrónico ha sido eliminada por un miembro del personal.
{:off_topic=>“Tu publicación fue marcada como fuera de tema : la comunidad siente que no encaja bien con el tema, tal como está definido actualmente por el título y la primera publicación.”, :inappropriate=>“Tu publicación fue marcada como inapropiada : la comunidad siente que es ofensiva, abusiva, una conducta de odio o una violación de nuestras pautas comunitarias.”, :illegal=>“Tu publicación fue marcada como ilegal : la comunidad cree que podría estar infringiendo la ley.”, :spam=>“Tu publicación fue marcada como spam : la comunidad siente que es un anuncio, algo de naturaleza excesivamente promocional en lugar de útil o relevante para el tema esperado.”, :notify_moderators=>“Tu publicación fue marcada para atención del moderador : la comunidad siente que algo en la publicación requiere intervención manual por parte de un miembro del personal.”, :responder=>{:off_topic=>“La publicación fue marcada como fuera de tema : la comunidad siente que no encaja bien con el tema, tal como está definido actualmente por el título y la primera publicación.”, :inappropriate=>“La publicación fue marcada como inapropiada : la comunidad siente que es ofensiva, abusiva, una conducta de odio o una violación de nuestras pautas comunitarias.”, :spam=>“La publicación fue marcada como spam : la comunidad siente que es un anuncio, algo de naturaleza excesivamente promocional en lugar de útil o relevante para el tema esperado.”, :notify_moderators=>“La publicación fue marcada para atención del moderador : la comunidad siente que algo en la publicación requiere intervención manual por parte de un miembro del personal.”}}
Por favor, revisa nuestras pautas comunitarias para obtener más detalles.
Pasos para reproducir:
Asegúrate de que Discourse requiera la aprobación de la primera publicación de cada usuario.
Crea un nuevo usuario.
Crea una nueva publicación con el nuevo usuario.
Usando una cuenta de administrador, rechaza la publicación con la opción “Eliminar usuario”.
El nuevo usuario recibe un correo electrónico con el contenido anterior.
2 Me gusta
Richie
(Richie Rich)
12 Septiembre, 2025 07:41
2
Si sirve de ayuda, un par de capturas de pantalla de la vista de administrador de la publicación rechazada:
Antes de eliminar al usuario:
Después del rechazo y la eliminación:
1 me gusta
selase
(Selase Krakani)
Separó este tema
18 Noviembre, 2025 11:45
3
selase
(Selase Krakani)
12 Septiembre, 2025 18:24
4
Esto parece ser un error en la forma en que se genera flag_reason aquí:
def account_deleted(email, reviewable)
post_action_type_id =
reviewable.reviewable_scores.first&.reviewable_score_type ||
PostActionTypeView.new.types[:spam]
build_email(
email,
template: "user_notifications.account_deleted",
flag_reason: I18n.t("flag_reasons.#{PostActionTypeView.new.types[post_action_type_id]}"),
)
end
PostActionTypeView.new.types no incluye la bandera :needs_approval (que se crea en el flujo descrito). Debido a esto, la clave de traducción se resuelve a flag_reasons. (sin sufijo), lo que devuelve toda la sección YAML en lugar de una sola entrada. Es por eso que hay un hash de Ruby en lugar de la razón de la bandera.
flag_reasons:
off_topic: "Your post was flagged as **off-topic**: the community feels it is not a good fit for the topic, as currently defined by the title and the first post."
inappropriate: "Your post was flagged as **inappropriate**: the community feels it is offensive, abusive, to be hateful conduct or a violation of [our community guidelines](%{base_path}/guidelines)."
illegal: "Your post was flagged as **illegal**: the community thinks it might be breaking the law."
spam: "Your post was flagged as **spam**: the community feels it is an advertisement, something that is overly promotional in nature instead of being useful or relevant to the topic as expected."
notify_moderators: "Your post was flagged **for moderator attention**: the community feels something about the post requires manual intervention by a staff member."
responder:
off_topic: "The post was flagged as **off-topic**: the community feels it is not a good fit for the topic, as currently defined by the title and the first post."
inappropriate: "The post was flagged as **inappropriate**: the community feels it is offensive, abusive, to be hateful conduct or a violation of [our community guidelines](%{base_path}/guidelines)."
spam: "The post was flagged as **spam**: the community feels it is an advertisement, something that is overly promotional in nature instead of being useful or relevant to the topic as expected."
notify_moderators: "The post was flagged **for moderator attention**: the community feels something about the post requires manual intervention by a staff member."
De manera relacionada, esto probablemente también afecte a las banderas personalizadas, ya que sus traducciones también faltarían.
7 Me gusta
Moin
12 Septiembre, 2025 18:43
6
Estoy seguro de que sí. Lo mencioné en mayo.
Moin:
Moin:
Nota al margen:
3 Me gusta
selase
(Selase Krakani)
18 Noviembre, 2025 11:51
7
Hemos fusionado una solución para el problema en el OP. He movido el informe relacionado con los usuarios en staging a su propio tema para facilitar su seguimiento pendiente de una solución.
main ← fix/deleted-user-email
opened 04:43PM - 24 Sep 25 UTC
`UserNotifications#account_deleted` builds a localized flag reason from the revi… ewable’s first `reviewable_score` (falling back to `spam` if none is found).
Currently, some score types (e.g. `needs_approval`) are not covered. In cases where a "Needs Approval" flag led to an account deletion, the lookup key could end up as `flag_reasons.`, causing the entire `flag_reasons`
section to be rendered instead of a single entry.
This change adds support for additional score types (like `needs_approval`). If no translation exists (e.g. custom flags), the flag’s description will be used if available, before falling back to the default `spam` reason.
More context: https://meta.discourse.org/t/ruby-hash-syntax-being-displayed-in-emails-sent-to-deleted-users/382411
1 me gusta