我有一个地址模型,其中包含以下字段: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
已更改,地理编码器仅更新Long和Lat。我想要的是,如果number, street, city, post_code
中的任何一个发生变化,地理编码器就会运行。这样做的最佳做法是什么?
答案 0 :(得分: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
这应该强制它在地址更新时更新,这应该意味着至少有一个属性已经改变,所以不需要检查它们是否不同。