-1

我有以下数组:

@unregistered_users = ['my@email.com', 'your@email.com', ...]

现在,我想为每个数组元素创建一个文档:

@unregistered_users.each do |email_address|
  Model.create(email: email_address, user: self.user, detail: self)
end

但它只创建一个文档(数组的第一个元素)。根本不创建其他数组元素。为什么?

我们正在使用 Ruby 1.9.3-p385、Rails 3.2.12、MongoID 3.0.0 和 MongoDB 2.2.3

更新#1

因此,我们有一个_id使用自定义随机标记的自定义字段SecureRandom.hex(64).to_i(16).to_s(36)[0..127]

在我删除它之后,它可以正常工作,但是使用常规的 mongo ID(这不是我们想要的)。

更新#2

这就是生成令牌的方式:

class Model
  include Mongoid::Document
  include Mongoid::Timestamps

  ...
  field :_id, default: SecureRandom.hex(64).to_i(16).to_s(36)[0..127]
  ...

  index( { _id: 1 }, { unique: true } )
end
4

1 回答 1

0

尝试这样的事情来检查 mongoid 模型上的错误是什么:

@unregistered_users.each do |email_address|
  model = Model.create(email: email_address, user: self.user, detail: self)
  puts model.errors.inspect unless model.persisted?
end

或用于create!引发异常并查看发生了什么

于 2013-02-25T21:45:46.687 回答