Как упорядочить документы по динамическому свойству в Mongoid - PullRequest
2 голосов
/ 29 мая 2011

Я использую Mongoid для хранения серии геокодированных списков.Эти списки должны быть отсортированы по цене и близости.Цена каждого листинга - это поле в базе данных, тогда как расстояние - это динамическое свойство, уникальное для каждого пользователя.

class Listing
  include Mongoid::Document

  field :price

  def distance
    get_distance(current_user.location,coordinates)
  end
end

Как отсортировать документы по расстоянию?Я попытался @listing.desc(:distance), и это не сработало.

1 Ответ

2 голосов
/ 30 мая 2011

Короткий (и бесполезный) ответ: вы не можете.

Mongoid имеет возможность запрашивать на основе 2d координат , тогда вы можете обновить свой контроллерсделать что-то вроде этого:

@listings = Listing.near(current_user.location)

Который, я полагаю, вернет ваши списки в порядке расстояния.

На заметку, я заметил, что ваша модель Listing относится к вашейcurrent_user объект, который как бы нарушает архитектуру MVC, поскольку ваши модели не должны ничего знать о текущем сеансе.

...