在 Ruby 中使用地理编码器在用户注册期间进行地址验证
Address validation during user sing up using geocoder in Ruby
我正尝试在 rails 的 ruby 用户注册期间包含地址验证。用户必须以街道地址、城市和邮政编码的形式输入他们的地址。我使用这个在用户控制器中实现了一些地址验证:
after_validation :geocode
has_secure_password
validates :address, presence: true
validate :found_address_presence
def found_address_presence
if latitude.blank? || longitude.blank?
errors.add(:address, " wasn't found.")
end
end
def full_address
[address, city, state, zip_code, 'USA'].compact.join(', ')
end
但是,这总是 returns 找不到地址的错误,即使地址有效。我已确认我输入的地址是真实的,并且在删除验证后可以使用。为什么这不起作用?似乎纬度和经度总是空白,但似乎是在删除地址验证时适当添加的。
我认为这里的问题是第一行 after_validation :geocode
在验证之前没有填写经度和纬度。所以 validate :found_address_presence
总是会有空白的纬度和经度。如果将第一行更改为 before_validation :geocode
,那么我认为它应该可以工作。
我正尝试在 rails 的 ruby 用户注册期间包含地址验证。用户必须以街道地址、城市和邮政编码的形式输入他们的地址。我使用这个在用户控制器中实现了一些地址验证:
after_validation :geocode
has_secure_password
validates :address, presence: true
validate :found_address_presence
def found_address_presence
if latitude.blank? || longitude.blank?
errors.add(:address, " wasn't found.")
end
end
def full_address
[address, city, state, zip_code, 'USA'].compact.join(', ')
end
但是,这总是 returns 找不到地址的错误,即使地址有效。我已确认我输入的地址是真实的,并且在删除验证后可以使用。为什么这不起作用?似乎纬度和经度总是空白,但似乎是在删除地址验证时适当添加的。
我认为这里的问题是第一行 after_validation :geocode
在验证之前没有填写经度和纬度。所以 validate :found_address_presence
总是会有空白的纬度和经度。如果将第一行更改为 before_validation :geocode
,那么我认为它应该可以工作。