2015-12-31 56 views
0

​​表示Venue.near([40.71, -100.23], 20, :units => :km)訪問地址解析器寶石作用域

但是這個應用程序的模型對象必須在除了個別經度和緯度地理編碼2座標變量。爲了測試各種搜索選項(postGIS,lon和lat的數字索引,或者調用地理編碼器服務),有沒有辦法在發現給定位置附近的對象時訪問特定的模型變量?

相關的架構數據是:

t.decimal "origin_lon",   precision: 15, scale: 10 
t.decimal "origin_lat",   precision: 15, scale: 10 
t.spatial "origin_lonlat",  limit: {:srid=>3857, :type=>"point"} 
add_index "strappos", ["origin_lat"], :name => "index_strappos_on_origin_lat" 
add_index "strappos", ["origin_lon"], :name => "index_strappos_on_origin_lon" 
add_index "strappos", ["origin_lonlat"], :name => "index_strappos_on_origin_lonlat", :spatial => true 
+0

向我們展示對象的模式/模型,以便我們確切知道它看起來像 –

+0

更新了一段時間後面.. – Jerome

回答

1

的GeoCoder默認使用latitudelongitude他們的變量名。由於您的不同,您需要添加一個附加選項才能查詢origin_lonorigin_lat

在你的模型,你的模型初始化geocoder,你有緯度/經度屬性分配一個不同的名稱的選項:

# YourModel.rb 
geocoded_by :address, 
    latitude: :origin_lat, 
    longitude: :origin_lon 

我把它放在多線的清晰度。如您所見,我告訴geocoder我的緯度/經度屬性名稱與默認值不同。

現在,使用near查詢模型將查看這些新的屬性名稱,而不是默認值。