Lasciatemi tornare indietro… ciò che stavo facendo in quel momento era cercare di modificare le preferenze dell’amministratore nella speranza che il codice che genera l’eccezione non dovesse essere eseguito.
Ma ciò che ci interessa davvero è verificare se esiste un bug nel codice che necessita di una correzione, o qualcosa di anomalo nel vostro database che non dovrebbe esserci. O forse entrambe le cose.
Il backtrace porta a questo codice in app/serializers/current_user_serializer.rb
def has_new_upcoming_changes
last_visited = object.custom_fields["last_visited_upcoming_changes_at"]
return false if last_visited.blank? && object.created_at < Discourse.site_creation_date + 1.hour
cutoff = last_visited.present? ? Time.zone.parse(last_visited) : object.created_at
UpcomingChangeEvent.added.not_backfilled.where("created_at > ?", cutoff).exists?
end
Si potrebbe eseguire una query tramite data explorer per vedere quale valore di last_visited_upcoming_changes_at hanno i vostri account di amministratore.
SELECT
ucf.id AS custom_field_id,
ucf.user_id,
u.username,
ucf.name,
ucf.value
FROM user_custom_fields ucf
INNER JOIN users u ON u.id = ucf.user_id
WHERE ucf.name = 'last_visited_upcoming_changes_at'
AND u.admin = true
e ciò potrebbe essere utile. Nel mio caso (aggiornato di recente a v2026.7.3) è semplicemente una stringa di data, che credo sia il formato corretto.