J'ai un contrôleur API qui reçoit des informations sur le chemin d'accès et les balises id3 d'un fichier multimédia et les enregistre dans une instance Active Record, à l'aide de PostgreSQL/Rails.
Parfois, cependant, l'utilisateur envoie des chaînes telles que:
"genre"=>"Hip-Hop\u0000Hip-Hop/Rap"
et Rails/Postgres ne sont pas vraiment satisfaits de cela quand on essaie de persister sur save
:
An ArgumentError occurred in internals#receive:
string contains null byte
activerecord (3.2.21) lib/active_record/connection_adapters/postgresql_adapter.rb:1172:in `send_query_prepared'
Comment puis-je nettoyer cette chaîne dans Ruby pour supprimer complètement les octets nuls?
La méthode gsub
sur String
convient probablement. Vous pouvez simplement faire string.gsub("\u0000", '')
pour vous en débarrasser.