2015-03-03 80 views
0

我正在使用Geokit來查找距離某個位置最近的站點。代碼在驗證後運行。使用Geokit返回最近的記錄返回PG :: SyntaxError

這裏的選址模型:

class Location < ActiveRecord::Base 
    belongs_to :station 

    # Find nearest station after validation 
    after_validation :update_nearest_station 

    def update_nearest_station 
    nearest_station = Station.closest(:origin => [latitude,longitude]) 

    update_attribute(:station_id, nearest_station.id) 
    end 
end 

和火車站模型:

class Station < ActiveRecord::Base 
    has_many :locations 

    acts_as_mappable :default_units => :km, :lat_column_name => :latitude, :lng_column_name => :longitude 
end 

當我運行的代碼或者通過編輯/添加一個新的位置,或通過我的種子數據,我得到以下錯誤:

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near ")" 

LINE 4: ... SIN(0.8992918053979032)*SIN(RADIANS(stations.latitude))))*) 
                   ^
: SELECT "stations".* FROM "stations" ORDER BY 
     (ACOS(least(1,COS(0.8992918053979032)*COS(-0.0014597933863680574)*COS(RADIANS(stations.latitude))*COS(RADIANS(stations.longitude))+ 
     COS(0.8992918053979032)*SIN(-0.0014597933863680574)*COS(RADIANS(stations.latitude))*SIN(RADIANS(stations.longitude))+ 
     SIN(0.8992918053979032)*SIN(RADIANS(stations.latitude))))*) 
     asc LIMIT 1 

我已經嘗試了很多不同的方式使用Geokit的其他方法ds(例如withinfirst),但我似乎無法得到它的工作。

這是Geokit的錯誤還是我錯過了一些非常明顯的東西?

回答

0

Values for units can be :miles, :kms (kilometers), or :nms (nautical miles), with :miles as the default.

這樣::default_units => :kms