Aplicar opciones de usuario por defecto históricamente es una calle de sentido único

Cuando una opción de usuario predeterminada se establece de falso a verdadero, no se comporta como debería.
No pregunta si la configuración debe aplicarse a los usuarios existentes e incluso si lo hiciera, eso no funcionaría.

Reproducción:

  • Tener una configuración como, por ejemplo, “abrir enlaces externos en una nueva pestaña” habilitada
  • Establecer admin - configuración - preferencias del usuario - abrir otros enlaces externos en una nueva pestaña por defecto en habilitado
  • Establecer admin - configuración - preferencias del usuario - abrir otros enlaces externos en una nueva pestaña por defecto en deshabilitado
  • Obtener una ventana emergente ¿Le gustaría aplicar este cambio históricamente? Esto cambiará las preferencias de X usuarios existentes. y elegir Sí
  • Para todos los usuarios, “abrir enlaces externos en una nueva pestaña” ahora está deshabilitado

Hasta ahora todo bien, pero:

  • Establecer admin - configuración - preferencias del usuario - abrir otros enlaces externos en una nueva pestaña por defecto en habilitado
  • No obtener ninguna ventana emergente y sigue deshabilitado para todos.

Último paso esperado:

  • Obtener una ventana emergente ¿Le gustaría aplicar este cambio históricamente? Esto cambiará las preferencias de X usuarios existentes. donde elegir Sí lo habilitaría para todos

Esto se aplica a todas las preferencias de usuario default_.

Esto parece estar relacionado con aquí y aquí

previous_value = SiteSetting.public_send(id) || "" if update_existing_users

que establece previous_value a "" si la configuración es false, y luego

UserOption.where(user_option => previous_value).update_all(attrs)

y

json[:user_count] = UserOption.where(user_option => previous_value).

no hace nada.

9 Me gusta

Aquí tienes una PR:

4 Me gusta

Este tema se cerró automáticamente 3 días después de la última respuesta. Ya no se permiten nuevas respuestas.