9

および属性を持つ Ruby on Rails モデルCampingがあります。#latitude#longitude

これは検証する必要があります。次のように検証する必要があります。

  • 値は正しくフォーマットされています。たとえば、48.8582 と 2.2945 だけでなく、48.8 と 2.2 もあります。任意の精度を許可する必要があります。それらをフロートとして保存しますが、追加の検証が必要またはアドバイスされていますか?
  • それらは有効な範囲内 (0 ~ 90) です。または、負の数、または 90 を超える数と下回る数を許可する必要がありますか?

この点が実際に有効な住所 (海、北極など、地球上の有効な点である限り) であるかどうかには興味がありません。

私はgeocoder gem を使用していますが、今のところ、入力は単なる lat/lon テキストフィールドのペアです。ジオコーダーは、緯度/経度のペアを検証するためのユーティリティ メソッド (私が見つけることができない) を持っている可能性があるため、この質問にのみ関心があります。

4

2 に答える 2

27

Geocoder でそれを確認する方法を知りませんが、Rails 検証を使用するだけで済みます

validates :latitude , numericality: { greater_than_or_equal_to:  -90, less_than_or_equal_to:  90 }
validates :longitude, numericality: { greater_than_or_equal_to: -180, less_than_or_equal_to: 180 }
于 2013-02-12T01:19:27.293 に答える
0

Rails 4 以降では、正解は次のようになります。

validates :lat, numericality: { greater_than_or_equal_to: -90,  \
  less_than_or_equal_to: 90 }
validates :lng, numericality: { greater_than_or_equal_to: -180,  \
  less_than_or_equal_to: 180 }
于 2014-07-22T07:55:24.043 に答える