2012-11-26 32 views
5

Alan adı olarak bir kullanıcı adı olan bir koleksiyona sahibim. Model bu alanı benzersiz olarak tanımlar. Ancak veritabanında yinelenen bir değer ekleyebildim.mongoid benzersiz dizin izin verilen değerler

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

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

Koleksiyon ancak vardır 2 kullanıcı adı vardır Burada yanlış giden ne aynı

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

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

?

+0

Örneğiniz aynı ObjectId öğelerini de gösterir - doğru mu, yoksa kopyala/yapıştır izleme mi? – kmfk

+0

benim kötü ... Bu bir kopya yapıştır sorunu oldu – Amit

+0

Merak ediyorum - Bu bir keskin collilerton değil mi? – kmfk

cevap

9

Dizinlerinizi iki kez kontrol ederim - konsoldan db.collection.getIndexes() numaralı telefonu deneyin ve dizininizin bulunduğundan emin olun.

Bunu kaçırırsanız, Mongoid sizin belirttiğiniz için dizini otomatik olarak oluşturmaz - dahilini çalıştırmanız gerekir: rake db:mongoid:create_indexes.

+0

harika! bu işe yarıyor! teşekkürler – Amit

+0

Ancak, mongoid çift giriş eklerken bir hata atmıyor. Giriş eklenmedi, ancak mongoid hata vermiyor. – Amit

+0

Bu, MongoDB'deki varsayılan "yazma endişesi" nedeniyle oluşur - sürücü bir yanıt beklemez - yani "getLastError" veya "persist_in_safe_mode" kalıcılık ayarlarınızı değiştirmeniz gerekir. [Moğol: Kalıcılık - Güvenli Mod] 'a göz atın (http://two.mongoid.org/docs/persistence/safe_mode.html). – kmfk

İlgili konular