7

それぞれが一意になるように、guidフィールドに制約と検証を配置しています。問題は、以下に示すファクトリ定義では、追加のインスタンスが検証に失敗するため、1つのユーザーインスタンスしか作成できないことです。

GUIDフィールドが常に一意になるように、これを正しく行うにはどうすればよいですか?

Factory.define(:user) do |u|
  u.guid UUIDTools::UUID.timestamp_create.to_s
end
4

1 に答える 1

11

一般的に、FactoryGirlはシーケンスの問題に対処します。

Factory.define(:user) do |u|
  u.sequence(:guid) { |n| "key_#{n}" }
end

ただし、イテレータのようなものではなく、タイムスタンプが必要だと思います。これは、遅延属性(実行時に評価される)を使用して実行できます。

Factory.define(:user) do |u|
  u.guid { Time.now.to_s }
end

または、UUIDTools :: UUID.timestamp_createが(適切にフォーマットされた)タイムスタンプを生成すると仮定します。

Factory.define(:user) do |u|
  u.guid { UUIDTools::UUID.timestamp_create.to_s }
end
于 2010-07-14T13:48:01.303 に答える