Comportamento incoerente nella classe UserUpdater

@eviltrout

Passi per riprodurre:

  1. Creiamo un campo utente con id 1.
  2. Esegui due volte la seconda riga del codice sottostante.

Caso 1

up = UserUpdater.new(Discourse.system_user, User.find(1))
up.update({:custom_fields=>{:user_field_1=>
4 Mi Piace

Questo sembra effettivamente un bug valido e dovrebbe essere risolto, grazie per averlo segnalato!

4 Mi Piace

La mia analisi si riduce a questo.

# caso 1
u1 = User.find(1)
u1.custom_fields[:user_field_1] = "abc"
u1.save

# caso 2
u1.custom_fields["user_field_1"] = "abc"
u1.save

Nel caso 1, viene creato un nuovo UserCustomField per ogni chiamata a u1.save

Nel caso 2, tutti i UserCustomField con il nome ‘user_field_1’ vengono eliminati dal database
tranne quello specificato.

Screenshot 2020-08-20 at 11.56.49 AM

In sintesi, le versioni symbol e string della stessa chiave vengono trattate in modo diverso nel mixin HasCustomFields.

1 Mi Piace

Ok, l’ho fatto. Ecco la PR che risolve il problema

7 Mi Piace

Ok, quindi questa è stata unita.

3 Mi Piace