Ruby on rails Rails验证问题与前\u验证

Ruby on rails Rails验证问题与前\u验证,ruby-on-rails,ruby,validation,Ruby On Rails,Ruby,Validation,我对rails还是相当陌生,所以我不确定我在这里遗漏了什么 我正在使用GeoKit在保存时对地址进行地理编码。我有一个方法,可以对地址进行地理编码,如果找不到地址,就会在错误列表中添加一个错误。我已经在控制台中测试了它,它在地理代码上失败(可能是添加了错误),但仍然成功保存 acts_as_mappable before_validation_on_create :geocode_address before_validation_on_update :geocode_address valid

我对rails还是相当陌生,所以我不确定我在这里遗漏了什么

我正在使用GeoKit在保存时对地址进行地理编码。我有一个方法,可以对地址进行地理编码,如果找不到地址,就会在错误列表中添加一个错误。我已经在控制台中测试了它,它在地理代码上失败(可能是添加了错误),但仍然成功保存

acts_as_mappable
before_validation_on_create :geocode_address
before_validation_on_update :geocode_address
validates_presence_of :street
validates_presence_of :city
validates_presence_of :state
validates_presence_of :zip
validates_presence_of :name
validates_uniqueness_of :name

 def geocode_address
    geo=Geokit::Geocoders::MultiGeocoder.geocode ("#{street}, #{city}, #{state}, #{zip}")
    puts "geocoded: #{street}, #{city}, #{state}, #{zip}"
    if geo.success
      self.lat, self.lng = geo.lat,geo.lng
    else
      errors.add(:street, "Could not Geocode address")
    end 
   puts "geo status: #{geo.success}"
 end

任何帮助都将不胜感激,谢谢:)

A
在验证之前
钩子与实际验证不同。您正在尝试将两者结合在一起。您仍然希望尝试在钩子中创建地理代码,但是使用单独的验证来确保它是正确的,并执行
错误。在那里添加