Проверка точного адреса с помощью геокодера в Rails
В основном я прошу своих пользователей ввести их полный адрес. На мой взгляд это выглядит так:
<%= label_tag('Address') %> <br>
<%= label_tag(:address_unit, 'Unit/Flat/Apartment Number:') %> <%= number_field_tag(:address_unit, current_profile.try(:address_unit)) %> <br>
<strong><%= label_tag(:address_street, 'Street Number and Name:') %></strong> <%= text_field_tag(:address_street, current_profile.try(:address_street)) %> ie 51 Kennedy Street <br>
<strong><%= label_tag(:address_city, 'Suburb/Town/City:') %></strong> <%= text_field_tag(:address_city, current_profile.try(:address_city)) %> <br>
<strong><%= label_tag(:address_state, 'State/Province:') %></strong> <%= text_field_tag(:address_state, current_profile.try(:address_state)) %> <br>
<strong><%= label_tag(:address_zip, 'Post/ZIP Code:') %></strong> <%= text_field_tag(:address_zip, current_profile.try(:address_zip)) %> <br>
<strong><%= label_tag(:address_country, 'Country:') %></strong> <%= text_field_tag(:address_country, current_profile.try(:address_country)) %> <br>
В моем контроллере я в основном объединяю эти поля и затем передаю их в геокодер, например:
def address_check
complete_address = ''
if (params[:address_unit])
complete_address += params[:address_unit] + ', '
end
complete_address += params[:address_street] + ', ' + params[:address_city] + ', '\
+ params[:address_state] + ', ' + params[:address_zip] + ', ' + params[:address_country]
coords = Geocoder.coordinates(complete_address)
coord_invalid = coords.present?
return coord_valid ? nil : 'Address cannot be found, please correct your address'
end
Цель этой проверки адреса - убедиться, что пользователь написал существующий адрес. У меня проблема в том, что Geocoder принимает любой адрес, если указан почтовый индекс и страна. Например: asdasd, asdasd, asdasad, 90503, USA
это приемлемый адрес. У меня вопрос, есть ли способ точно найти адрес, так что если он не может быть найден, то не возвращаются координаты? Кстати я использую Rails 4.