首页 > 解决方案 > 在用户使用 Ruby 中的地理编码器唱歌期间进行地址验证

问题描述

我试图在用户注册 ruby​​ on rails 期间包含地址验证。用户必须以街道地址、城市和邮政编码的形式输入他们的地址。我使用这个在用户控制器中实现了一些地址验证:

    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

但是,这总是返回找不到地址的错误,即使地址有效也是如此。我已经确认我输入的地址是真实的,并且在删除验证时有效。为什么这不起作用?似乎纬度和经度总是空白的,但是当地址验证被删除时,它们似乎被适当地添加了。

标签: ruby-on-railsrails-geocoder

解决方案


我认为这里的问题是第一行after_validation :geocode直到验证后才填写经度和纬度。所以validate :found_address_presence总会有空白的纬度和经度。如果您将第一行更改为before_validation :geocode,那么我认为它应该可以工作。


推荐阅读