2013-02-11 93 views
5

我有一個Ruby on Rails模型Camping#latitude#longitude屬性。驗證地理位置緯度和經度

這應該驗證。它必須經過驗證,以便:

  • 值的格式設置正確。例如。 48.8582和2.2945,但也是48.8和2.2。任何精度都應該被允許。我將它們存儲爲Float,需要還是建議使用任何addtitional驗證?
  • 它們在有效範圍內(0-90)。或者我應該允許負數還是90以上或以下的數字?

我對這一點是否是一個實際的有效地址(海,北極,無論,只要它是地球上的有效點)不感興趣。

我正在使用geocoder寶石,但現在,輸入只是一對經緯度文本字段。地理編碼器僅僅是這個問題的興趣,因爲它可能有效用方法(我找不到)來驗證經緯度對。

回答

19

我不知道在地理編碼任何方法來檢查,但你可以只使用軌驗證

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 } 
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 }