Mamy niesamowity błąd, w którym pozornie losowe bajty to około 90% czasu, w którym są umieszczane na polu wiadomości e-mail bezpośrednio w momencie zapisywania wiadomości e-mail. Oto przykład tego, co może nastąpić:Dziwne bajty dodane do atrybutu po zapisaniu w szynach
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'
Gdzie do cholery to się \u007f
(the UTF-8 delete character!!!) pochodzą z ?! To zdecydowanie najczęstsze śmieci, które się pojawiają. Oto lista niektórych innych ważnych sekwencji bajtów, które pojawiły się od czasu do czasu:
r\u007f U\u007f a\u007f #m$\u007f
Czasem mam całkowite bity śmieci, nie mogę powiedzieć, czy istnieje więcej bajtów niż te z powodu błędu PG::CharacterNotInRepertoire
:
0xde 0x4d
0xf6 0x7f
0xbc
0xe3 0x6c 0x24
Biorąc pod uwagę występujące błędy PG::CharacterNotInRepertoire
, zakładam, że dzieje się to gdzieś tuż przed zapisaniem wartości, ale poza zakresem mojego kodu aplikacji.
Należy zauważyć, że nie dzieje się to dziwnie dla innych pól dla użytkownika.
Oto wszystkie wywołania zwrotne, które obecnie dotykają adres e-mail:
#strip!
i#downcase!
przed potwierdzeniem- Format walidacja z regex
\A[A-Za-z0-9._%+-][email protected](?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,20}\z
Niektóre informacje app:
- Ruby v2.2.0
- szyn v4.1.8
- Postgresa v9.3.2
- PG v0.17.1