你能 geocode_by 模型中的两个不同位置吗?

Can you geocode_by two different locations in model?

所以我的模型有两个位置 - 'from' 和 'to' 位置。 geocode_by 这两个怎么才能得到两组经纬度。这就是我正在尝试的,但只有 geocodes_by 'to' 位置和 from_lat 和 from_long 列为零 - 可能只是因为 'to' 位置在 'from' 位置之后。

class Post < ActiveRecord::Base
  belongs_to :user

  geocoded_by :from_address, :latitude => :from_lat, :longitude => :from_long
  geocoded_by :to_address, :latitude => :to_lat, :longitude => :to_long
  after_validation :geocode

  def from_address
    [fromstreet, fromcity, fromstate].compact.join(', ')
  end

  def to_address
    [tostreet, tocity, tostate].compact.join(', ')
  end
end

想知道如何做到这一点,如果有人好奇的话:

基本上只是添加了一个名为 from_address_coords 的新方法并将其命名为 before_save 因为地理编码器 gem 只会保存一组坐标 - 在这种情况下,from_address没有被保存。

class Post < ActiveRecord::Base
  belongs_to :user

  geocoded_by :to_address,   :latitude   => :to_lat,   :longitude => :to_long

  def to_address
    [tostreet, tocity, tostate].compact.join(', ')
  end

  def from_address
    [fromstreet, fromcity, fromstate].compact.join(', ')
  end

  def from_address_coords
    coords = Geocoder.coordinates(self.from_address)
    self.from_lat = coords[0]
    self.from_long = coords[1]
  end

  before_save :from_address_coords
  after_validation :geocode

end