Giter Site home page Giter Site logo

.order('distance DESC') fails with ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'distance' in 'order clause' about geokit-rails HOT 6 CLOSED

geokit avatar geokit commented on May 23, 2024
.order('distance DESC') fails with ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'distance' in 'order clause'

from geokit-rails.

Comments (6)

wspruijt avatar wspruijt commented on May 23, 2024

I have the exact same problem.

It is caused by the fact that - somehow - the column alias for distance is missing (version 2.0.1) Therefore, when adding the order, the "undefined method `distance'" message will appear.

A (temporary) workaround is to include the distance (using distance_sql) in the order clause:

geokit_origin = Geokit::LatLng.new(39.833193, -94.862794)
order_sql = Company.distance_sql(geokit_origin, units: :kms)
companies.within(10, units: :kms, origin: geokit_origin).order("#{order_sql} ASC")

from geokit-rails.

hiphapis avatar hiphapis commented on May 23, 2024

you can use by_distance

locations = Location.by_distance(origin: @YOUR_LOCATION)

from geokit-rails.

mnoack avatar mnoack commented on May 23, 2024

See #39 for a similar discussion on this where an alternative has been created.

from geokit-rails.

wspruijt avatar wspruijt commented on May 23, 2024

Thanks @hiphapis, that is an easier solution. However, you can't sort descending by distance.

from geokit-rails.

hiphapis avatar hiphapis commented on May 23, 2024

@wspruijt you known reverse_order

locations = Location.by_distance(origin: @YOUR_LOCATION).reverse_order

if you use rails3 then just use reverse ;)

locations = Location.by_distance(origin: @YOUR_LOCATION).reverse

from geokit-rails.

thoraxe avatar thoraxe commented on May 23, 2024

hiphapis - when you use "by_distance" it appears you lose the distance column:

barns = Barn.by_distance(origin: "30093")
barns[0].distance
 => nil

The same is true for wspruijt's suggestion.

mnoack's suggestion appears to work great:

((DistanceCollection.new(Barn.within(5, :origin => "30093"))).set_distance_from("30093")).sort_by(&:distance)[0].distance
  Barn Load (0.7ms)  SELECT `contacts`.* FROM `contacts` WHERE `contacts`.`type` IN ('Barn') AND ((
 (ACOS(least(1,COS(0.591845095540716)*COS(-1.4692258158522673)*COS(RADIANS(contacts.lat))*COS(RADIANS(contacts.lng))+
 COS(0.591845095540716)*SIN(-1.4692258158522673)*COS(RADIANS(contacts.lat))*SIN(RADIANS(contacts.lng))+
 SIN(0.591845095540716)*SIN(RADIANS(contacts.lat))))*3963.19)
 <= 5))
 => 2.0967481609455723

If I find some time I might issue a pull request for that method, but I can hack around it.

from geokit-rails.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.