2013-02-11 89 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 }