हम एक पागल बग का अनुभव कर रहे हैं जहां प्रतीत होता है कि यादृच्छिक बाइट्स ईमेल पते पर कुछ 90% समय पर ईमेल क्षेत्र पर खड़े हो रहे हैं, जब ईमेल सहेजा जा रहा है। यहाँ क्या हो सकता है की एक उदाहरण है:अजीब बाइट्स रेल में सहेजने के बाद विशेषता में जोड़ा गया
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'
कहाँ बिल्ली था कि \u007f
(UTF-8 delete character!!!) से आते हैं ?! यह अब तक का सबसे आम कचरा है जो दिखाता है। यहाँ एक सूची कुछ अन्य वैध बाइट दृश्यों कि समय-समय पर दिखाई दिया है:
r\u007f U\u007f a\u007f #m$\u007f
कभी कभी मैं पूरी तरह से कचरा बिट्स मिलता है, मैं नहीं बता सकता कि क्या कोई PG::CharacterNotInRepertoire
त्रुटि के कारण इन की तुलना में अधिक बाइट्स हैं:
0xde 0x4d
0xf6 0x7f
0xbc
0xe3 0x6c 0x24
PG::CharacterNotInRepertoire
त्रुटियों को देखते हुए, मुझे लगता है कि यह मूल्य बचाया जा रहा है, लेकिन मेरे आवेदन कोड के दायरे से बाहर कहीं और हो रहा है।
ध्यान दें कि यह उपयोगकर्ता के लिए किसी भी अन्य फ़ील्ड के लिए अजीब तरह से नहीं हो रहा है।
यहाँ सब कॉलबैक वर्तमान ईमेल पता स्पर्श करें कि इस प्रकार हैं:
#strip!
और#downcase!
सत्यापन से पहले regex
\A[A-Za-z0-9._%+-][email protected](?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,20}\z
साथ
- रूबी v2.2.0
- रेल v4.1.8
- Postgres v9.3.2
- पीजी v0.17.1