0

我正在使用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

我知道坐标字段是一个数组,并且它作为一个对象返回。

我可以使用以下命令成功设置坐标:

self.coordinates = [-98.765432,12.345678]

但不是这些命令:

self.coordinates[:lng] = -98.765432

self.coordinates[0] = -98.765432

我怎样才能编写 setter 来完成这项工作?

4

1 回答 1

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
于 2013-01-11T22:18:04.703 回答