我正在尝试使用Ruby on Rails和Mongoid Mapper编写一个示例应用程序。
对于某种测试,我想将1000个Testusers写入MongoDB ......
使用代码bolow Mongoid无法编写唯一的uid。在我的ruby控制台中,我得到了正确的柜台号码,但没有找到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 :(得分:0)
您不必在模型中提供字段uid。 MongoId为您添加id字段并在创建操作期间管理该值。 只需删除字段:uid,:type =>模型中的字符串
答案 1 :(得分:0)
如果您想使用自己的ID,可以将uid字段的名称更改为_id,它应该可以正常工作。但是,默认生成的mongo _id将使其更容易扩展和使用它,如果您需要该功能,则会删除分片的一个更难的方面。
如果你想使用默认生成的那些,除非明确地覆盖它们(你已经看到的行为),它们会被自动包含在内,所以只需删除你的自定义字段就应该全部设置。
您可以阅读有关ObjectIds here的更多信息。