9

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

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

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

我对这一点上是否是一个实际有效的地址不感兴趣(海、北极等等,只要它是地球上的一个有效点)。

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

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 回答