Quando un’opzione utente predefinita viene impostata da false a true, non si comporta come dovrebbe.
Non chiede se l’impostazione debba essere applicata agli utenti esistenti e anche se lo facesse, non funzionerebbe.
Riproduzione:
- Avere un’impostazione come, ad esempio, “apri collegamenti esterni in una nuova scheda” abilitata
- Imposta admin - impostazioni - preferenze utente -
apri altri collegamenti esterni in una nuova scheda predefinitosu abilitato - Imposta admin - impostazioni - preferenze utente -
apri altri collegamenti esterni in una nuova scheda predefinitosu disabilitato - Ottieni un popup
Vuoi applicare questa modifica storicamente? Questo cambierà le preferenze per X utenti esistenti.e scegli Sì - Per tutti gli utenti, “apri collegamenti esterni in una nuova scheda” è ora disabilitato
Fin qui tutto bene, ma:
- Imposta admin - impostazioni - preferenze utente -
apri altri collegamenti esterni in una nuova scheda predefinitosu abilitato - Non ottieni alcun popup ed è ancora disabilitato per tutti.
Ultimo passaggio previsto:
- Ottieni un popup
Vuoi applicare questa modifica storicamente? Questo cambierà le preferenze per X utenti esistenti.dove la scelta di Sì lo abiliterebbe per tutti
Questo vale per tutte le preferenze utente default_.
Questo sembra essere correlato a qui e qui
previous_value = SiteSetting.public_send(id) || "" if update_existing_users
che imposta previous_value a "" se l’impostazione è false, e poi
UserOption.where(user_option => previous_value).update_all(attrs)
e
json[:user_count] = UserOption.where(user_option => previous_value).
non fa nulla.