2012-11-26 17 views
5

मेरे पास एक संग्रह है जिसमें उपयोगकर्ता नाम फ़ील्ड है। मॉडल इस क्षेत्र को अद्वितीय होने के लिए परिभाषित करता है। हालांकि मैं डेटाबेस में एक डुप्लिकेट मान डालने में सक्षम था।mongoid अद्वितीय अनुक्रमणिका डुप्लिकेट मानों की अनुमति

class Profile 
    include Mongoid::Document 
    include Mongoid::Paperclip 

    field :username 
    index({ username: 1 } , { unique: true }) 
end 

संग्रह तथापि 2 उपयोगकर्ता नाम हैं कि है एक ही

{ "_id" : ObjectId("50b3b323421aa95da6000004"), 
    "username" : "marceloreuse" } 

{ "_id" : ObjectId("50b3b567421aa93d84000002"), 
    "username" : "marceloreuse" } 

गलत यहाँ क्या हो गया?

+0

आपका उदाहरण भी वही सटीक ऑब्जेक्ट आईडी दिखाता है - क्या यह सही है या कॉपी/पेस्ट निरीक्षण है? – kmfk

+0

मेरा बुरा ... वह एक कॉपी पेस्ट मुद्दा था – Amit

+0

जिज्ञासा से - यह एक शर्मीली कॉललेसिटन नहीं है, है ना? – kmfk

उत्तर

9

मैं आपके इंडेक्स को दोबारा जांच दूंगा - कंसोल से db.collection.getIndexes() आज़माएं और सुनिश्चित करें कि आपकी अनुक्रमणिका मौजूद है।

यदि आप इसे चूक गए हैं, तो Mongoid इंडेक्स का निर्माण नहीं करता है क्योंकि आपने इसे निर्दिष्ट किया है - आपको शामिल करने की आवश्यकता है: rake db:mongoid:create_indexes

+0

बढ़िया है! यह काम करता है! धन्यवाद – Amit

+0

हालांकि, डुप्लिकेट प्रविष्टि जोड़ते समय भी mongoid एक त्रुटि फेंक नहीं रहा है। प्रविष्टि नहीं जोड़ा गया है, लेकिन मोंगोइड कोई त्रुटि नहीं दे रहा है। – Amit

+0

यह मोंगोडीबी में डिफ़ॉल्ट 'लिखने की चिंता' के कारण है - ड्राइवर प्रतिक्रिया के लिए इंतजार नहीं करेगा - जिसका अर्थ है कि आपको या तो 'getLastError' को कॉल करने या अपनी दृढ़ता सेटिंग 'persist_in_safe_mode' को बदलने की आवश्यकता है। देखें [Mongoid: दृढ़ता - सुरक्षित मोड] (http://two.mongoid.org/docs/persistence/safe_mode.html)। – kmfk