我还是相当新的铁杆,所以我不确定我在这里缺少什么。
我正在使用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
非常感谢任何帮助,谢谢:)
答案 0 :(得分:3)
before_validation
挂钩与实际验证不同。你试图把这两者结合起来。您仍然希望尝试在挂钩中创建地理编码,但使用单独的验证来确保它是正确的,并在那里执行errors.add
。