Почему FactoryBot продолжает присваивать одно и то же значение для lat / lng каждый раз? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть следующие фабрики местоположений:

FactoryBot.define do
  factory :location do
    valid_points = [
      # a bunch of points in format ["lng", "lat"]
    ]
    point = valid_points.sample
    geography = RGeo::Geographic.spherical_factory(srid: 4326).point(point[0], point[1])

    street_1 { Faker::Address.street_address }
    street_2 { Faker::Address.secondary_address }
    city { Faker::Address.city }
    state { Faker::Address.state }
    country { Faker::Address.country }
    lonlat { geography }
    longitude { point[0] }
    latitude { point[1] }
  end
end

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

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете использовать обратные вызовы FactoryBot

FactoryBot.define do
  factory :location do    
    street_1 { Faker::Address.street_address }
    street_2 { Faker::Address.secondary_address }
    city { Faker::Address.city }
    state { Faker::Address.state }
    country { Faker::Address.country }

    after(:build) do |location| 
      valid_points = [
        # a bunch of points in format ["lng", "lat"]
      ]
      point = valid_points.sample
      geography = RGeo::Geographic.spherical_factory(srid: 4326).point(point[0], point[1])

      location.lonlat = geography
      location.latitude = point[1]
      location.longitude = point[0]
    end
  end
end
...