Создание экземпляров с уникальными атрибутами с помощью Девочки Фабрики

У меня есть ограничение и проверка, помещенная в поле гуида так, чтобы каждый был уникален. Проблема с определением фабрики, которое я имею ниже, я могу создать только один пользовательский экземпляр, поскольку дополнительные экземпляры приводят проверку к сбою.

Как я делаю это правильно так, чтобы поле гуида было всегда уникально?

Factory.define(:user) do |u|
  u.guid UUIDTools::UUID.timestamp_create.to_s
end
7
задан skaffman 14 July 2010 в 13:28
поделиться

1 ответ

В общем, 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
11
ответ дан 6 December 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: