Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 需要地理编码器结果才能保存_Ruby On Rails_Ruby On Rails 4_Rails Geocoder - Fatal编程技术网

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之前验证地址。