I'm using Geokit to find the closest station to a location. The code runs after validation.
Here's the Location model:
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
and the Station model:
class Station < ActiveRecord::Base
has_many :locations
acts_as_mappable :default_units => :km, :lat_column_name => :latitude, :lng_column_name => :longitude
end
When I run the code either by editing/adding a new Location or through my seed data I get the following error:
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
I've tried lots of different ways of doing this using Geokit's other methods (e.g. within with first) but I can't seem to get it to work.
Is this a bug with Geokit or am I missing something really obvious?
For those wondering it's related to the unit.
If you set the :default_units to an unknow value the request failed (for my case :km instead of :kms)
Related to #97
I'm using Geokit to find the closest station to a location. The code runs after validation.
Here's the Location model:
and the Station model:
When I run the code either by editing/adding a new Location or through my seed data I get the following error:
I've tried lots of different ways of doing this using Geokit's other methods (e.g.
within
withfirst
) but I can't seem to get it to work.Is this a bug with Geokit or am I missing something really obvious?