【发布时间】:2016-02-12 07:08:40
【问题描述】:
在给定以下模型和关系的情况下,如何使用 geocoder gem 更新纬度和经度坐标。我有一个Location 模型,它具有属于我的Event 模型的latitude 和longitude 属性。纬度和经度会自动获取并存储在我的Location 模型的latitude 和longitude 属性中。我的Event 模型有一个字段venue_address,这是我进行地理编码的依据。
class Location < ActiveRecord::Base
belongs_to :event
geocoded_by :venue_address
after_validation :geocode
end
这是我的Event 模型与has_one :location 关系
class Event < ActiveRecord::Base
has_one :location, dependent: :destroy
end
接下来是我建立关系的事件创建方法。
class EventsController < ApplicationController
def create
@event = Event.new(event_params)
# Builds longitude and latitude coordinates based on a valid street address
# and saves it to Location table
@event.build_location
...
end
end
当我更新事件的地址时,我想对新坐标进行地理编码并将坐标保存到Location 模型中的相应字段。
我无法做到这一点。有什么想法或建议吗?
【问题讨论】:
-
位置表是否包含“venue_address”属性?
-
什么是错误以及你得到了什么。请详细说明
-
@Sravan
Location坐标通过geocode_by方法获取。要回答您的问题,venue_address位于Event模型中。 -
如果'venue_address'在事件模型中,那么'geocoded_by :venue_address'应该在事件模型中。
标签: ruby-on-rails ruby-on-rails-4 geolocation rubygems