2012-11-26 4 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" } 

を持っていますか?コンソールからdb.collection.getIndexes()を試してみて、あなたのインデックスが存在していることを確認してください - 私はあなたのインデックスをチェック倍増する

+0

あなたの例も示しまったく同じのObjectIdの - 正しいまたはコピー/ペースト監督ですか? – kmfk

+0

私の悪い...それはコピーペースト問題好奇心のうち – Amit

+0

だった - これはシャードcollecitonではない、それはありますか? – kmfk

答えて

9

rake db:mongoid:create_indexes:あなたは含まを実行する必要がある -

は場合、あなたはそれを指定したためMongoidは自動インデックスを構築しません、それを逃しました。

+0

素晴らしい!それは動作します!ありがとう – Amit

+0

しかし、mongoidは重複したエントリを追加するときにもエラーをスローしません。エントリーは追加されませんが、モンゴイドは何の誤りもありません。ドライバが応答を待ちません - - デフォルトのMongoDBにおける '書き込みconcern'によるものだ – Amit

+0

あなたに意味はどちらか' getLastError'を呼び出すか、あなたの持続性の設定 'persist_in_safe_mode'を変更する必要があります。 [Mongoid:Persistence-Safe Mode](http://two.mongoid.org/docs/persistence/safe_mode.html)を参照してください。 – kmfk

関連する問題