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 defectoen habilitado - Establecer admin - configuración - preferencias del usuario -
abrir otros enlaces externos en una nueva pestaña por defectoen 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 defectoen 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.