Ruby on rails 需要地理编码器结果才能保存
我用它来获取地址的纬度和经度。模型如下:Ruby on rails 需要地理编码器结果才能保存,ruby-on-rails,ruby-on-rails-4,rails-geocoder,Ruby On Rails,Ruby On Rails 4,Rails Geocoder,我用它来获取地址的纬度和经度。模型如下: class Location < ActiveRecord::Base has_many :offers # Validation validates :name, :address, :postcode, :presence => true # Geocoding geocoded_by :full_address after_validation :geocode # Methods def ful
class Location < ActiveRecord::Base
has_many :offers
# Validation
validates :name, :address, :postcode, :presence => true
# Geocoding
geocoded_by :full_address
after_validation :geocode
# Methods
def full_address
[address, "London", postcode].compact.join(', ')
end
end
类位置true
#地理编码
地理编码用户:完整地址
验证后:地理编码
#方法
def完整地址
[地址,“伦敦”,邮政编码].compact.join(“,”)
结束
结束
如果没有纬度和经度,记录是无用的,所以我需要阻止它保存,除非地理编码成功
我尝试为地址添加一些验证,但地址可以在不可地理编码的情况下有效(例如,伦敦Fake Street 123)。我还尝试添加纬度和经度的验证,但因为地理编码是在验证之后进行的,这也不起作用
澄清一下:我希望在验证后保留地理编码,这样我就不必为不相关的错误调用地理编码。例如,模型上有一个必需的
name
属性,如果该属性为空,则尝试和地理编码是没有意义的。您是否尝试过使用地理编码前验证回调,然后验证lat/long?是否有效。理想情况下,我希望先验证地址和其他字段是否正确,然后再进行地理编码以保存API请求。将更新问题以更清楚地了解这一点。您查看过自定义验证器吗?构建您自己的验证器将允许您控制验证完成的顺序。也就是说,您可以指定在lat/long之前验证地址。