Stiamo vivendo un bug insano in cui byte apparentemente casuali sono circa il 90% del tempo attaccati a un campo di posta elettronica proprio nel momento in cui l'email viene salvata. Ecco un esempio di ciò che potrebbe accadere:Weird Bytes Added to Attribute After Save in Rails
From params: '[email protected]' Before validate: '[email protected]' After validate: '[email protected]' Before save: '[email protected]' Value in object after save: '[email protected]' Retrieve record just created by id, and fetch id: '[email protected]\u007f'
Dove diavolo ha fatto quella \u007f
(il UTF-8 delete character!!!) provengono da ?! Questo è di gran lunga la spazzatura più comune che si presenta. Ecco un elenco di alcuni altri sequenze di byte validi che sono apparsi di volta in volta:
r\u007f U\u007f a\u007f #m$\u007f
A volte mi fanno parecchio bit di immondizia, non posso dire se ci sono più byte di questi a causa di un errore di PG::CharacterNotInRepertoire
:
0xde 0x4d
0xf6 0x7f
0xbc
0xe3 0x6c 0x24
Dati gli errori PG::CharacterNotInRepertoire
che si verificano, presumo che ciò avvenga da qualche parte immediatamente prima che il valore venga salvato, ma al di fuori dello scopo del mio codice applicazione.
Si noti che questo non sta accadendo stranamente per altri campi per l'utente.
Ecco tutti i richiami che attualmente toccano l'indirizzo e-mail:
#strip!
e#downcase!
prima della convalida convalida
- formato con l'espressione regolare
\A[A-Za-z0-9._%+-][email protected](?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,20}\z
Alcune informazioni app:
- Ruby v2.2.0
- Rails v4.1.8
- Postgres v9.3.2
- PG v0.17.1