Wenn eine Standardbenutzeroption von false auf true gesetzt wird, verhält sie sich nicht wie erwartet.
Es wird nicht gefragt, ob die Einstellung für bestehende Benutzer angewendet werden soll, und selbst wenn, würde das nicht funktionieren.
Reproduktion:
- Haben Sie eine Einstellung wie z. B. “Externe Links in neuem Tab öffnen” aktiviert.
- Setzen Sie Admin - Einstellungen - Benutzereinstellungen -
Standardmäßig andere externe Links in neuem Tab öffnenauf aktiviert. - Setzen Sie Admin - Einstellungen - Benutzereinstellungen -
Standardmäßig andere externe Links in neuem Tab öffnenauf deaktiviert. - Erhalten Sie ein Popup
Möchten Sie diese Änderung historisch anwenden? Dies ändert die Einstellungen für X bestehende Benutzer.und wählen Sie Ja. - Für alle Benutzer ist “Externe Links in neuem Tab öffnen” jetzt deaktiviert.
Soweit so gut, aber:
- Setzen Sie Admin - Einstellungen - Benutzereinstellungen -
Standardmäßig andere externe Links in neuem Tab öffnenauf aktiviert. - Erhalten Sie kein Popup und es ist immer noch für alle deaktiviert.
Erwarteter letzter Schritt:
- Erhalten Sie ein Popup
Möchten Sie diese Änderung historisch anwenden? Dies ändert die Einstellungen für X bestehende Benutzer., bei dem die Auswahl von Ja es für alle aktivieren würde.
Dies gilt für alle default_ Benutzereinstellungen.
Dies scheint sich auf hier und hier zu beziehen.
previous_value = SiteSetting.public_send(id) || "" if update_existing_users
was previous_value auf "" setzt, wenn die Einstellung false ist, und dann
UserOption.where(user_option => previous_value).update_all(attrs)
und
json[:user_count] = UserOption.where(user_option => previous_value).
tut nichts.