TL;DR
PostGIS入れてactiverecord-postgis-adapter入れてgeometry型カラムを持つモデル作ったけどRailsでどうやって値入れるんだっけ?
→これでいけそう。
RGeo::Geographic.spherical_factory(srid: 4326).point(139.7003912, 35.6897376)
環境
mac OS X mojave
Ruby on Rails 5.2.3
検証
- PostgreSQLをインストール(PostGISも)
$ brew install postgresql
$ brew install postgis
$ brew services postgresql start
- Railsプロジェクトを立ち上げ、
activerecord-postgis-adapter
gemを追加
$ rails new test_application
$ cd test_application
$ echo "gem 'activerecord-postgis-adapter'" >> Gemfile
$ bin/bundle
- DBを初期化
$ bin/rails db:create
$ bin/rails db:gis:setup
- モデルを作成
$ bin/rails g model Location name:string point:geometry #geometry型でモデルを作成
$ bin/rails db:migrate
- db/seed.rb にLocationモデルを作成
- SRID: 4326 は世界測地系のSRIDの一つ
- SRIDについては こちらを参考にしました
Location.create(
name: "新宿駅",
point: RGeo::Geographic.spherical_factory(srid: 4326).point(139.7003912, 35.6897376)
)
- DBに値が挿入されていることを確認
$ bin/rails c
irb(main):001:0> Location.all
=> #<ActiveRecord::Relation [#<Location id: 1, name: "新宿駅", point: #<RGeo::Cartesian::PointImpl:0x3fcd7929c4e0 "POINT (139.7003912 35.68973764)">>]>