2013-05-04 25 views
0

我試圖在電子郵件中添加時間戳以在用戶表中生成uniqueuenss。我有:電子郵件中的工廠女孩​​和時間戳

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 

但好像這應該是工作(當然我第一次使用工廠女孩)。我將如何解決這個問題?

THX

回答

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

你看,時間戳是相同的。您需要等待1秒以獲得獨特的時間戳。

電子郵件是重複的,所以無法創建。

其實你不需要時間戳。您可以利用sequence直接在FactoryGirl中創建獨特的電子郵件。

sequence(:email) {|n| "person#{n}@example.com" } 
+0

thx,我應該在問題中增加更多信息。我正在使用FactoryGirl在幾個不同的地方爲關聯的對象播種獨特的用戶,所以時間問題不是什麼問題。你指出的順序實際上會給我們一個麻煩,因爲順序本質上是重新啓動。如果prob只是覆蓋或什麼,但想要獲得時間戳(如果只是爲了後代) – timpone 2013-05-04 07:22:16

+0

@timpone,那麼我猜是原因是電子郵件太長,或在你的驗證規則中不允許使用連字符。另外,如果你只想創建一個用戶,那應該沒問題。如果兩個或更多在一起,時間戳可能會帶來問題。 – 2013-05-04 07:28:47