我正在使用Mongoid Spacial在Place模型上存储坐标。我在客户端进行地理编码,并发送两个文本字段:纬度和经度。这些字段名称正确,这似乎是服务器端问题,因为坐标也会无声地在Rails控制台中保持不变。
模型
class Place
include Mongoid::Document
include Mongoid::Paranoia
include Mongoid::Timestamps
include Mongoid::Spacial::Document
attr_accessible :coordinates, :latitude, :longitude
field :coordinates, type: Array, spacial: true
spacial_index :coordinates
def latitude
coordinates[:lat]
end
def latitude=(latitude)
self.coordinates[:lat] = latitude
end
def longitude
coordinates[:lng]
end
def longitude=(longitude)
self.coordinates[:lng] = longitude
end
end
据我所知,coordinates字段是一个数组,它作为一个对象返回。
我可以使用以下命令成功设置坐标:
self.coordinates = [-98.765432,12.345678]
但不是这些命令:
self.coordinates[:lng] = -98.765432
self.coordinates[0] = -98.765432
如何编写setter以使其工作?
答案 0 :(得分:0)
这是一个有效的解决方案,但肯定有更好的方法。
def latitude
coordinates[:lat]
end
def latitude=(lat)
self.coordinates = [self.longitude,lat]
end
def longitude
coordinates[:lng]
end
def longitude=(lng)
self.coordinates = [lng,self.latitude]
end