Используйте гем Faker для создания коррелированных значений города, почтового индекса и кода страны.

Есть ли способ заставить гем Faker генерировать "коррелированные" значения кода города и страны?

Например,

  • Ванкувер, Калифорния
  • Миннеаполис, Миннесота

Я делаю это:

FactoryGirl.define do
  factory :location do
    ...
    city {Faker::Address.city}
    country_code {['US', 'CA'].sample}
    ...
  end
end

Но нет никакой гарантии, что city действительно будет находиться в country_code.

Я бы согласился на что-то вроде:

postal_code {Faker::Address.postcode(['US', 'CA'].sample) }

Который я мог бы затем геокодировать, чтобы получить другие значения.


person craig    schedule 25.07.2014    source источник


Ответы (2)


Вы можете настроить на основе региональных настроек: https://github.com/stympy/faker#customization.

Таким образом, вы можете создать или изменить файл локали, см. этот пример: https://github.com/stympy/faker/blob/master/lib/locales/en-NEP.yml

Затем вы можете указать, какой должна быть страна по умолчанию, а также какие штаты вы хотите использовать.

person Aguardientico    schedule 25.07.2014
comment
кстати, мне интересно, надежен ли фальшивый драгоценный камень с точки зрения того, чтобы не нарушать ваши тесты (например, сгенерированные дубликаты текста кода и тому подобное) - person dtc; 14.05.2015

Попробуй это:

Faker::Address

Также с его дополнительными опциями:

Faker::Address.city
person Hamza Satti    schedule 26.11.2019
comment
Это просто создает случайные данные, и это то, чего пытался избежать вопрос. - person isethi; 08.06.2021