2012-12-20 16 views
7

Tôi có đá quý tuyệt vời này https://github.com/alexreisner/geocoder hoạt động tốt trong ứng dụng của mình nhưng tôi cần đặt hàng kết quả của truy vấn ghi lại hoạt động hơi khác.Làm thế nào để đặt hàng các kết quả của đường ray mã hóa địa lý bằng một thứ gì đó khác với khoảng cách

Ví dụ bằng cách sử dụng đường ray console

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

tạo ra một truy vấn SQL dài (không liên quan) tiếp theo là

ORDER BY distance ASC 

này đưa ra một danh sách có thứ tốt đẹp của dân từ gần xa nhất (tối đa 10 cách xa hàng dặm). Bây giờ nếu tôi làm điều này

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

Truy vấn được nối bởi

ORDER BY distance ASC, price_per_hour 

tôi vẫn muốn tất cả những người gần London nhưng tôi không muốn nó đặt theo khoảng cách. Có vẻ như không được đưa ra điều này.

Tôi không thể sắp xếp bên ngoài truy vấn bản ghi đang hoạt động vì tôi đang sử dụng phân trang để việc đặt hàng cần được thực hiện trong truy vấn chính sau đó được phân trang.

Trả lời

16

Bạn nên cố gắng reorder thay vì order:

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

Các reorder loại bỏ và thay thế các order tuyên bố tạo ra bởi phạm vi near.

+0

Công cụ tuyệt vời cảm ơn bạn! – 32423hjh32423

+0

tuyệt vời - không biết về điều đó – user1051849

0

Tôi biết đã quá muộn. Bây giờ geocoder gem cung cấp để xóa thứ tự mặc định của khoảng cách

Person.near('London',10,order: false).order('price_per_hour') 
Các vấn đề liên quan