你能 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
所以我的模型有两个位置 - '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