0

我正在使用Mongoid Spacial在Place模型上存儲座標。我在客戶端進行地理編碼,併發送兩個文本字段:經度和緯度。這些字段的命名是正確的,這似乎是一個服務器端問題,因爲座標在默認情況下會失敗並保留在Rails控制檯中。Mongoid空間虛擬屬性不會持續

模型

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

我怎麼能寫二傳手

我可以使用下面的命令成功設置的座標做這個工作?

回答

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