0

メールにタイムスタンプを入れて、users テーブルに一意のものを生成しようとしています。私は持っている:

FactoryGirl.define do
  factory :user do
    sequence(:name)  { |n| "Person #{n}" }
    email { "jxt-{ Time.now.to_i.to_s }@jxt.com" }

しかし、これはエラーで機能しません:

Fri May 03$ rake db:seed --trace
(in /Users/jt/foodie-rails)
rake aborted!
Validation failed: Email is invalid

しかし、これは機能しているようです (私が初めて Factory Girl を使用したときは許可されています)。どうすればこれを修正できますか?

どうも

4

1 に答える 1

0
 > 3.times{ puts Time.now.to_i.to_s}
 > #=>1367650408
    1367650408
    1367650408

ご覧のとおり、タイムスタンプは同じです。一意のタイムスタンプを取得するには、1 秒待つ必要があります。

メールが重複しているため、作成できません。

実際には、タイムスタンプは必要ありません。FactoryGirlsequenceで直接独自のメールを作成するために使用します。

sequence(:email) {|n| "person#{n}@example.com" }
于 2013-05-04T06:55:33.487 に答える