Editar una preferencia de usuario para todos o un subconjunto de usuarios

:bookmark: Esta guía explica cómo editar una preferencia de usuario para todos los usuarios o para un subconjunto de ellos en Discourse.

:person_raising_hand: Nivel de usuario requerido: Administrador del sistema

:warning: Se requiere acceso a la consola.

Si necesitas actualizar la preferencia de usuario para todos tus usuarios o para un subconjunto grande de ellos, puedes hacerlo a través de la consola de Rails.

Resumen

En esta guía, aprenderás:

  • Cómo acceder a la consola de Rails para realizar cambios masivos
  • Ejemplos de modificación de preferencias de usuario
  • Cómo identificar los nombres de los ajustes

Acceso a la consola de Rails

Para entrar en la consola de Rails en tu configuración de Discourse, ejecuta los siguientes comandos:

./launcher enter app
rails c

Luego, ejecuta un comando que seleccione el conjunto de usuarios que deseas actualizar.

Ejemplos de modificación de preferencias de usuario

A continuación se muestran ejemplos de comandos para actualizar varias preferencias de usuario:

Establecer la última fecha de conexión para usuarios inactivos

Establece la última fecha de conexión para usuarios que nunca han iniciado sesión.

User.where("last_seen_at IS NULL").update_all(last_seen_at: 1.week.ago)

Desactivar el modo de lista de correo para todos los usuarios

Vuelve a la configuración predeterminada para evitar que los usuarios reciban correos electrónicos por cada nueva publicación.

UserOption.update_all(mailing_list_mode: false)

Establecer el nivel de correo electrónico en «solo cuando no se está conectado» para todos los usuarios

Restablece la configuración predeterminada para evitar las notificaciones por correo electrónico cuando los usuarios están activos en el sitio.

UserOption.update_all(email_level: 1)

Donde email_level puede tener los siguientes valores:

  • 0: siempre (enviar correos electrónicos incluso cuando el usuario está activo)
  • 1: solo cuando no se está conectado (predeterminado)
  • 2: nunca

Habilitar el chat para todos los miembros del grupo beta

beta_group = Group.find_by(name: "beta")
beta_group.users.each do |user|
  UserOption.where(user_id: user.id).update_all(chat_enabled: true)
end

Configurar las notificaciones por correo electrónico para excluir respuestas anteriores

Establece la preferencia para excluir respuestas anteriores en las notificaciones por correo electrónico.

UserOption.update_all(email_previous_replies: 0)

Donde email_previous_replies puede tener los siguientes valores:

  • 0: siempre
  • 1: a menos que ya se haya enviado por correo
  • 2: nunca

Para más información, consulta cómo controlar las respuestas anteriores en los correos electrónicos.

Identificación del nombre de un ajuste

Para determinar el nombre del ajuste de usuario y las opciones disponibles:

  • Utiliza el plugin Data Explorer para inspeccionar la tabla user_options.
  • Busca en el repositorio de GitHub de Discourse.

Por ejemplo, para ajustar la configuración relacionada con «Cuando publico en un tema, establecer ese tema en», necesitas modificar la opción de usuario notification_level_when_replying.

Consulta la configuración relevante para seguimiento.

También puedes configurar Docker para exponer psql y utilizar PGadmin para una gestión más fácil.

39 Me gusta