【问题标题】:Mongoid spacial virtual attribute does not persistMongoid空间虚属性不持久
【发布时间】:2013-01-11 20:07:53
【问题描述】:

我正在使用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 来完成这项工作?

【问题讨论】:

    标签: arrays ruby-on-rails-3.2 mongoid getter-setter virtual-attribute


    【解决方案1】:

    这是一个可行的解决方案,但肯定有更好的方法来做到这一点。

      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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多