Mysql
 sql >> Database >  >> RDS >> Mysql

Problema di accesso al negozio:impossibile leggere i vecchi valori di oggetti json serializzati (hash) già archiviati nel database mysql in Rails 4

Ho finalmente trovato la soluzione. L'implementazione "store accessor" (menzionata nella domanda) è stata modificata in activerecord 4.2.4. In precedenza (record attivo 3.2.8) i dati sono archiviati nel database è in formato YAML e funzionava con "coder:JSON", che non è il caso in activerecord 4.2.4

Ecco il codice link 4.2.4https ://github.com/rails/rails/blob/master/activerecord/lib/active_record/store.rb#L85

Ecco il codice link 3.2https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/store.rb#L35

Ora in 4.2.4, indipendentemente dal fatto che i dati archiviati nell'attributo serializzato siano in YAML o JSON, il codificatore che funziona per me ora è YAML.

Quindi il mio codice ha iniziato a funzionare dopo aver cambiato il codificatore da JSON a YAML.

Qualsiasi domanda/dubbio su questa risposta sarà apprezzato.