问题描述
使用 Rails geocoder
gem,地理编码作为模型的回调运行。
为避免无效地访问地理编码 API 服务,此回调需要以形成地理编码地址的关键属性之一为条件;这些将保存到数据库中(address
、municipal_id
、postcode
、region_id
、nation_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 (将#修改为@)