私は PostgreSQL + PostGIS を使用して空間データを操作しています。また、この gem activerecord-postgis-adapterを使用して、コードを簡単に記述できるようにしています。私はこのモデルを持っています
class Device < ActiveRecord::Base
attr_accessible :location
self.rgeo_factory_generator = RGeo::Geos.factory_generator
end
:location は PostGIS POINT である必要があります。Device の新しいインスタンスを作成するには (たとえば、コントローラーの create メソッドで)、次のようにします。
params = { location: "POINT (-26 -43)" }
@device = Device.new(params)
ここで、「POINT (-26 -43)」は WKT (Well Known Text) 形式の緯度 -26 経度 -43 のポイントです。この実装の詳細を非表示にして、次のように記述できるようにしたいと考えています。
params = { latitude: -26, longitude: -43 }
@device = Device.new(params)
おそらく、Device クラスの after_initialize メソッドをオーバーライドすることで、これを実現できます。他に何ができますか?
もう 1 つあり、このオブジェクトを JSON で出力する必要もあります。今私は得る
{ "location": "POINT (-26 -43)" }
しかし、私は次のようなものが欲しい
{ "location": { "latitude": -26, "longitude": -43 } }
これに対する簡単で汚い解決策は、as_json メソッドをオーバーライドすることです。他の提案はありますか?
ありがとう。