Mongoid创建新用户

时间:2012-01-07 16:04:08

标签: ruby-on-rails mongodb mongoid

我正在尝试使用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

2 个答案:

答案 0 :(得分:0)

您不必在模型中提供字段uid。 MongoId为您添加id字段并在创建操作期间管理该值。 只需删除字段:uid,:type =>模型中的字符串

答案 1 :(得分:0)

如果您想使用自己的ID,可以将uid字段的名称更改为_id,它应该可以正常工作。但是,默认生成的mongo _id将使其更容易扩展和使用它,如果您需要该功能,则会删除分片的一个更难的方面。

如果你想使用默认生成的那些,除非明确地覆盖它们(你已经看到的行为),它们会被自动包含在内,所以只需删除你的自定义字段就应该全部设置。

您可以阅读有关ObjectIds here的更多信息。