Rails 3 gem 'геокодер', функциональность поиска и дизайн модели - PullRequest
1 голос
/ 08 марта 2012

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

У меня есть модель Article и Place. Статья всегда будет написана о месте, поэтому статья всегда будет иметь идентификатор_позиции. Модель Place содержит адрес места и столбцы: широта и: долгота, которые требуются геокодеру.

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

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

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

1 Ответ

4 голосов
/ 08 марта 2012

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

@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
...