समय-समय पर, मुझे लगता है कि उपयोगकर्ता ईमेल डुप्लिकेट किए गए हैं। विशिष्टता की जांच के लिए मॉडल सत्यापन (ऐप स्तर) के साथ भी। मुझे संदेह है कि यह समवर्ती चिंताओं से संबंधित है।ईमेल को संग्रहीत करने वाले किसी भी मुद्दे को डाउन-कैस के रूप में?
मैंने इसे संबोधित करने के लिए डीबी स्तर पर एक सूचकांक जोड़ने का निर्णय लिया है।
निचला सूचकांक शायद वैसे भी समझदार है।
भले ही हम गारंटी दे रहे हैं कि आवेदन स्तर पर ईमेल कम हो गए हैं। डेटाबेस स्थिरता की एक मजबूत गारंटी प्रदान करता है।
इससे कोई फर्क नहीं पड़ता, लेकिन डीबी को लागू करने से यह भी चोट नहीं पहुंचा सकता है।
मैं उन बाधाओं को अधिकतम करने के लिए बहुत से अतिरिक्त सुरक्षा उपायों को डाल सकता हूं जिनके पास कभी भी अपरकेस वर्ण नहीं है, लेकिन ऐप अभी भी अन्य स्रोतों से डीबी में जाने वाले डेटा के लिए नियंत्रण नहीं कर सकता है, और वह कोड डेवलपर त्रुटि, रखरखाव लागत, आदि की संभावना है
class CreateUniqueIndexForUserEmails < ActiveRecord::Migration
def up
remove_index :users, :email
execute <<-SQL
CREATE UNIQUE INDEX index_users_on_lower_email ON users (LOWER(email));
SQL
end
def down
execute <<-SQL
DROP INDEX index_users_on_lower_email;
SQL
add_index :users, :email
end
end
मैं भी user
मॉडल में कोड के इस खंड के साथ इस तर्क मिलकर किया है:
def email=(value)
write_attribute :email, value.downcase
end
जो सुनिश्चित करता है [email protected]
के रूप में फिर से लिखा जाता है [email protected]
(ऐप स्तर पर)।
मैंने मुख्य रूप से Are email addresses case sensitive? पर पॉइंटर्स से आरएफसी ऑनलाइन पढ़ा है जो संकेत देता है कि कुछ ईमेल सर्वर केस संवेदनशीलता की परवाह करते हैं।
अभी भी, जब मैं आज ईमेल भेजता हूं। मैं शायद ही कभी आवरण में ध्यान नहीं लेता। असल में, मैं ईमेल को नीचे-नीचे के रूप में टाइप करता हूं। ईमेल अभी भी वितरित हो जाता है।
क्या आरएफसी कुछ पर विचार करना है? यानी यदि उपयोगकर्ता [email protected]
इनपुट करता है, तो ऐप [email protected]
के रूप में ईमेल पंजीकृत करता है। क्या इसका ईमेल "वितरण योग्यता" पर कोई असर होगा?
यदि नहीं, तो मुझे अन्य चिंताओं को ध्यान में रखना चाहिए?
कोई वास्तविक उत्तर नहीं, केवल एक हैक सुझाव: "सामान्य" ईमेल (जैसे 'normalized_email') को संग्रहीत करने के लिए अलग कॉलम क्यों नहीं है, जो अद्वितीय भी होना चाहिए? मेरा मतलब है, दुर्लभ मामलों में जब मामला वास्तव में मायने रखता है और अन्य उपयोगकर्ता समान ईमेल वाले दो उपयोगकर्ता होते हैं, तो आप या तो उनमें से किसी एक को अन्य ईमेल का उपयोग करने या इसे किसी अन्य तरीके से संभालने के लिए कह सकते हैं। –
दूसरा कॉलम होने का एक सुझाव है जिसे मैंने भी माना है। लेकिन इस विचार से पहले, मैं जानना चाहता हूं कि निचले-आवरण ईमेल के बारे में प्रस्ताव एक अनुशंसित दृष्टिकोण है या नहीं –