在 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,那么我认为它应该可以工作。