Преобразование сложного запроса Sql в Rails

Я использую рельсы gem geokit в своем приложении. У меня есть таблица, содержащая различные адреса. Я пытаюсь использовать функцию геокита by_distance, которая находит записи, упорядоченные по расстоянию от исходной точки.

Так что я делаю это в данный момент.

@close = Mytable.by_distance(:origin => "12 wall street, NY")

Итак, здесь происходит то, что все идентификаторы в MyTable хранятся в @close по порядку, что означает, что ближайший из них является первым элементом массива.

На самом деле мне нужны только два ближайших адреса из Mytable. Так что мне было интересно, как это сделать? Потому что мой текущий код дает мне список всех ближайших адресов в таблице по порядку. Я не хочу иметь плохие результаты, так как мне нужны только две ближайшие остановки.

Пожалуйста, предложите, как этого добиться.


person user1010101    schedule 02.05.2015    source источник


Ответы (1)


Вы должны попробовать это:

@close = Mytable.by_distance(:origin => "12 wall street, NY").limit(2)

Обратите внимание, что запрос by_distance уже настолько оптимизирован, насколько это возможно, и добавление limit к запросу не сделает ничего радикального для вас с точки зрения производительности, но также не должно замедлить работу вашего приложения.

Как всегда, протестируйте его в своей консоли, чтобы увидеть, как выглядит результирующий оператор SQL, и что ничего странного не происходит. Вы также можете сравнить их друг с другом, чтобы быть уверенным.

person Drenmi    schedule 02.05.2015