验证地理位置纬度和经度

时间:2013-02-11 15:37:57

标签: ruby-on-rails validation geocoding

我有一个带有Camping#latitude属性的Ruby on Rails模型#longitude

这应该得到验证。必须进行验证,以便:

  • 值格式正确。例如。 48.8582和2.2945但也有48.8和2.2。应该允许任何精度。我将它们存储为Float,是否需要或建议任何附加验证?
  • 它们在有效范围内(0-90)。或者我应该允许负数,或高于和低于90的数字?

我不知道这一点是否是一个实际有效的地址(海洋,北极,无论如何,只要它是地球上的有效点)。

我正在使用geocoder gem,但就目前而言,输入只是一对lat / lon文本字段。地理编码器只是对这个问题感兴趣,因为它可能有实用方法(我找不到)来验证纬度/长对。

2 个答案:

答案 0 :(得分:21)

我不知道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 }

答案 1 :(得分: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 }