2012-01-07 75 views
0

我正在嘗試使用Ruby on Rails和Mongoid Mapper編寫示例應用程序。Mongoid創建新用戶

對於某些類型的測試,我想寫1000個Testusers到MongoDB中......

隨着代碼bolow Mongoid不能寫唯一的UID的。在我的紅寶石控制檯中,我得到了櫃檯的正確號碼,但不是用於uid。

有人知道我忘了什麼嗎?

class User 

    include Mongoid::Document 
    include Mongoid::Timestamps 

    def self.create_users 
    (1..1000).each do |f| 
     user = User.new(uid: f.to_s, first_name: "first_name", last_name: "last_name", e_mail: "e_mail") 
     user.save! 
     puts f 
     puts user.uid 
    end 
    end 

    field :uid, :type => String 
    field :first_name, :type => String 
    field :last_name, :type => String 
    field :e_mail, :type => String 
    field :messages, :type => String 

    attr_accessible :first_name, :last_name, :e_mail 
    validates_presence_of :uid, :first_name, :last_name, :e_mail 
    validates_uniqueness_of :uid 

    has_many :messages 
end 

回答

0

您不必在模型中提供字段uid。 MongoId爲您添加id字段並在創建操作期間管理該值。 只需刪除字段:uid,:type =>來自型號的字符串

+0

是的,謝謝,但那絕對不是我想要使用的索引類型...例如:4f08d13945a36b20370048bf是我插入的最後一個用戶的ID ...謝謝你的回答,但是你知道爲什麼會發生這種情況嗎? ? – user934801 2012-01-07 23:25:51

+0

你是什麼意思,「不是我想要使用的那種指數。」 ? MongoDb使用ObjectId類型作爲其「記錄」的「主鍵」,所以MongoId使用相同的類型。 – ema 2012-01-08 15:28:31

0

如果您要使用自己的ID,可以將uid字段的名稱更改爲_id,並且它應該可以正常工作。但是,默認生成的mongo _id將使其更容易擴展並使用它,如果您需要該功能,則可以刪除分片中更難的一個方面。

如果您想使用默認生成的那些,除非明確重寫(您已經看到的行爲),否則它們會自動包含,因此只需刪除您的自定義字段,並且應該全部設置。

你可以閱讀更多關於ObjectIds here