Функциональность поиска «геокодера» в Rails 3 и дизайн модели

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

У меня есть модель статьи и модель места. Статья всегда будет написана о месте, поэтому статья всегда будет иметь place_id. Модель Place содержит адрес места и столбцы :latitude и :longitude, необходимые геокодеру.

В geocoder есть метод «nearbys», который позволяет мне находить места поблизости от заданного места, например, @place.nearbys даст набор мест поблизости @place. Это здорово, но я хочу иметь возможность найти все статьи, написанные недавно и написанные о местах поблизости.

Я могу придумать только два способа сделать это. Либо добавьте столбец широты и долготы в мою модель статьи, что позволит мне искать @articles.nearby. Проблема с этим решением заключается в том, что кажется, что это не будет хорошим дизайном модели, поскольку место должно отвечать за сохранение широты и долготы, а не каждая статья, написанная о месте.

Если вы можете сделать несколько предложений о том, как я мог бы легко добиться этого, это было бы здорово, спасибо!


person botbot    schedule 08.03.2012    source источник


Ответы (1)


пара вариантов, которые могли бы работать для вас?

@places = Place.near(@search, @distance, :order => :distance)
@articles = Article.where("place_id IN (?)", @places).where("published_on > ?", 60.days.ago).limit(3 * @places.length)

лениво загружать статьи с мест, но ограничивать результаты

@place = Place.find(params[:id])
@place.nearbys(@distance).each do |place|
    place.articles.order("created_at desc").limit(3).each do |article|
        # ...
    end
end
person house9    schedule 08.03.2012