【问题标题】:Validate Geolocation latitude and longitude验证地理位置纬度和经度
【发布时间】:2013-02-11 15:37:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails validation geocoding


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在 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, numericity: {less_than_or_equal_to: 90, greater_than_or_equal_to: -90}
      猜你喜欢
      • 2012-09-22
      • 1970-01-01
      • 2015-12-06
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      相关资源
      最近更新 更多