我在guid字段上设置了一个限制和验证,以确保每个guid都是唯一的。问题是,在下面的工厂定义中,我只能创建一个用户实例,因为其他实例无法通过验证。
我该如何正确地做到这一点,以便guid字段始终是唯一的?
Factory.define(:user) do |u|
u.guid UUIDTools::UUID.timestamp_create.to_s
end
我在guid字段上设置了一个限制和验证,以确保每个guid都是唯一的。问题是,在下面的工厂定义中,我只能创建一个用户实例,因为其他实例无法通过验证。
我该如何正确地做到这一点,以便guid字段始终是唯一的?
Factory.define(:user) do |u|
u.guid UUIDTools::UUID.timestamp_create.to_s
end
通常,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