对多个属性更改之一进行地理编码

问题描述

使用 Rails geocoder gem,地理编码作为模型的回调运行。 为避免无效地访问地理编码 API 服务,此回调需要以形成地理编码地址的关键属性之一为条件;这些将保存到数据库中(addressmunicipal_idpostcoderegion_idnation_id)。

定义结合这些值的虚拟属性

def inserted_address
  [self.address,self.municipal.name,self.postcode,self.region.try(:name),self.nation.name].compact.join(',')
end

不会使用 ActiveRecord 的脏模块,因为它显然只作用于数据库写入的值。所以 obj.inserted_address.changed? 不是解决方案。 但是类上的以下方法

after_validation :geocode,if: ->(obj){ obj.inserted_address.present? and (obj.address.changed? or obj.postcode.changed? or obj.municipal_id.changed?) }

返回undefined method 'changed?' for "my street,114":String

的投诉

这句话怎么写?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)