В нашем приложении у нас изначально были записи пользователей с широтой/долготой, и это работало нормально. По мере того, как мы становились больше и все больше людей использовали его, количество обновлений/проверок местоположения стало большим, и я подумал, что мы могли бы облегчить нагрузку, отделив местоположение от записи пользователя: можно обновлять и проверять местоположение независимо от записи пользователя без сдувая кеш сериализатора для пользовательских данных каждые X секунд, мы обновляем местоположение...
Однако это привело к интересной проблеме: при попытке найти пользователей рядом с определенным местом мы теперь немного облажались. Когда широта/долгота связаны с пользователем, вы можете просто выполнить User.near(@geocoded_record)
и получить отсортированный по расстоянию список пользователей. Когда местоположение является независимым, становится все труднее, и я ищу совета о том, как правильно запросить это.
Я пробовал User.some_scopes.joins(:location).merge(Location.near(@geocoded_record))
, но это возвращает ActiveRecord_Relation
с записями пользователя, которые содержат только нулевой идентификатор, широту и долготу... Этого НЕ происходит, когда по какой-то причине применяется какой-либо другой вид области/запроса к слиянию местоположения.
Итак ... У кого-нибудь есть предложение о том, как лучше всего получать записи пользователей, отсортированные по расстоянию, в геокодированную запись через ассоциацию, не возвращаясь к широте/долготе непосредственно для пользователя?