Как использовать фейкер для создания точки? - PullRequest
0 голосов
/ 28 января 2019

У меня есть модель со следующим атрибутом:

#  lonlat         :geography({:srid point, 4326

Используя Faker, как я могу создать значение для этого?

FactoryBot.define do
  factory :my_table do
    # ...
    lonlat { }
    # ...
  end
end

Ответы [ 3 ]

0 голосов
/ 28 января 2019

название модели: точка.имя столбца db: широта, долгота.

в seed.rb

factory :points do
  latitude { Faker::Points.latitude }
  longitude { Faker::Points.longitude }
end

затем в терминале

rake db:seed
0 голосов
/ 28 января 2019

Согласно документации Faker, для построения координат можно использовать:

lon = Faker::Address.longitude
lat = Faker::Address.latitude

Здесь вы можете найти все методы Faker: https://www.rubydoc.info/github/stympy/faker/index

Если вы используете activerecord-postgis-adapter Вы можете использовать предоставленную фабрику:

FactoryBot.define do
  factory :my_table do
    # ...
    lonlat { factory.point(lon, lat) }
    # ...
  end
end

Подробнее: https://github.com/rgeo/activerecord-postgis-adapter#working-with-spatial-data

0 голосов
/ 28 января 2019

Вы конкретно не говорите, для чего они будут использоваться, поэтому я не могу точно сказать вам, как построить ваш lonlat объект, но вы можете использовать следующее для построения ваших координат.

Широта - это число от -90 до 90, а Долгота - это число от -180 до 180, так что это даст вам правильную пару координат, которую вы сможете использовать по своему усмотрению.

lat = rand(-90.0..90.0)
lon = rand(-180.0..180.0)
...