0

我从 CSV 文件中导入了一堆位置,现在我需要对它们进行地理编码。当我手动创建新记录时,我会运行:geocode验证后。我希望能够一次在所有记录上运行它。

我已经调查过了update_all,但无法让它工作。有没有办法做到这一点?

这是我的模型:

class Location < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  default_scope order('locations.name ASC')

  acts_as_gmappable             

  attr_accessible               :name,
                                :address, 
                                :city,
                                :province,
                                :postal_code,
                                :country,
                                :phone,
                                :ext,
                                :phone_alt,
                                :ext_alt,
                                :url, 
                                :latitude, 
                                :longitude 

  geocoded_by                   :address

  validates_presence_of         :name
  validates_presence_of         :address
  validates_presence_of         :city
  validates_presence_of         :province
  validates_presence_of         :postal_code
  validates_presence_of         :country


  after_validation              :geocode


  def gmaps4rails_address
    "#{self.address} #{self.city} #{self.province} #{self.postal_code} #{self.country}" 
  end                          
end
4

1 回答 1

3

update_all 用于在您的记录上执行数据库更新语句,因此您可以Location.update_all("SET postal_code=null")清除所有邮政编码字段。对于您的情况,听起来您只想在一批位置对象上运行您的方法。

怎么样:

Location.all.each do |loc|
  loc.geocode
end
于 2013-08-27T01:23:34.187 回答