-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

次のようにして、モンゴイド モデルのエラーを確認します。

@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 に答える