验证地理位置的纬度和经度

9

我有一个Ruby on Rails模型Camping,其中包含#latitude#longitude属性。

需要进行验证。必须进行验证,以便:

  • 这些值的格式正确。例如,48.8582和2.2945,但也可以是48.8和2.2。任何精度都应该允许。我将它们存储为Float,是否需要或建议进行其他验证?
  • 它们在有效范围内(0-90)。或者我应该允许负数、90以上和90以下的数字?

我不关心这一点是否是实际有效的地址(海洋、北极、任何地方,只要是地球上的有效点)。

我正在使用geocoder gem,但现在,输入仅为一对纬度/经度文本字段。对于此问题,Geocoder仅仅是有用的,因为它可能有验证lat/long对的效用方法(我找不到)。

2个回答

29

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

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 }

注意:反转验证器的顺序不起作用,即验证 :lat, numericality: {less_than_or_equal_to: 90, greater_than_or_equal_to: -90}。 - Enow B. Mbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接