1

我有一个包含以下字段的地址模型:number, street, city, post_code.

我使用一种称为fulladdress将所有字段插入到一个中的方法,然后将其传递给地理编码器,该地理编码器返回地址的经度和纬度。

这是我的地址模型:

class Address < ActiveRecord::Base
    belongs_to :user

    def fulladdress
        "#{number} #{street}, #{city}, #{post_code}"
    end

    geocoded_by :fulladdress
    after_validation :geocode, :if => :number_changed?

end

目前,地理编码器仅更新经度和纬度(如果number已更改)。我想要的是地理编码器在有任何number, street, city, post_code变化时运行。执行此操作的最佳实践方法是什么?

4

1 回答 1

1

我从未使用过地理编码器,但如果您只想在属性更改时更新某些内容,您可以设置after_save回调。

class Address < ActiveRecord::Base
    belongs_to :user

    def fulladdress
        "#{number} #{street}, #{city}, #{post_code}"
    end

    geocoded_by :fulladdress
    after_save :geocode

end

这应该会在地址更新时强制它更新,这应该意味着至少有一个属性已更改,因此无需检查它们是否不同。

于 2014-08-17T17:10:26.700 回答