2012-12-20 16 views
7

Ho questa eccellente gemma https://github.com/alexreisner/geocoder funzionante bene nella mia app, ma ho bisogno di ordinare i risultati di una query di registrazione attiva in modo leggermente diverso.Come faccio a ordinare i risultati di rails geocoder gem da qualcosa di diverso dalla distanza

Ad esempio utilizzando la console rotaie

$> Person.near('London',10) 

produce una query lunga SQL (non rilevante) seguito da

ORDER BY distance ASC 

Questo dà una bella lista ordinata di persone dal più vicino al più lontano (fino a 10 lontano miglia). Ora, se faccio questo

$> Person.near('London',10).order('price_per_hour') 

La query viene aggiunto da

ORDER BY distance ASC, price_per_hour 

voglio ancora tutte le persone vicino Londra, ma non voglio che ordinare dalla distanza. Sembra che non ci sia in ogni caso a tirarlo fuori.

Non riesco a ordinare al di fuori della query del record attivo perché sto usando la paginazione, quindi l'ordinamento deve essere fatto nella query principale che viene poi impaginata.

risposta

16

Si dovrebbe provare reorder invece di order:

Person.near('London',10).reorder('price_per_hour') 

I reorder rimuove e sostituire il order dichiarazione creato da l'ambito near.

+0

Great stuff grazie! – 32423hjh32423

+0

cool - non lo sapevo – user1051849

0

So che è troppo tardi. Ora geocoder Gem offre per rimuovere ordine predefinito di distanza

Person.near('London',10,order: false).order('price_per_hour') 
Problemi correlati