Проблема проверки Rails с before_validation - PullRequest
1 голос
/ 05 июня 2010

Я все еще довольно новичок в рельсах, поэтому я не уверен, что мне здесь не хватает.

Я использую 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

Любая помощь будет принята с благодарностью, спасибо:)

1 Ответ

3 голосов
/ 05 июня 2010
Хук

A before_validation - это не то же самое, что фактическая проверка. Вы пытаетесь объединить два здесь. Вы все еще хотите попытаться создать геокод в вашем хуке, но используйте отдельную проверку, чтобы убедиться, что он верен, и выполните errors.add там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...