У меня есть ограничение и проверка, помещенная в поле гуида так, чтобы каждый был уникален. Проблема с определением фабрики, которое я имею ниже, я могу создать только один пользовательский экземпляр, поскольку дополнительные экземпляры приводят проверку к сбою.
Как я делаю это правильно так, чтобы поле гуида было всегда уникально?
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