7

我在 guid 字段上放置了一个约束和一个验证,以便每个都是唯一的。问题是,使用下面的工厂定义,我只能创建一个用户实例,因为其他实例无法通过验证。

如何正确执行此操作以使 guid 字段始终是唯一的?

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

1 回答 1

11

一般来说,Factory Girl 解决了序列的问题:

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 回答