Rails 3 GEM 'GeoCoder' поиска функциональность поиска и дизайн модели
-
09-12-2019 - |
Вопрос
У меня есть свой вид общих вопросов о Geocoder GEM и как разработать мои модели в рельсах, чтобы облегчить полезные особенности геокодера.
У меня есть модель статьи и модель размещения. Статья всегда будет написана о месте, поэтому статья всегда будет иметь Place_id. Модель Place содержит адрес этого места и и: широту и: Tongite Columns, который требует геокодер. У
Geocoder имеет метод «ближайшие клеевые», которые позволяют мне найти места рядом с данным местом, например @ Place.nearbys даст коллекцию мест поблизости @place. Это здорово, но я хочу иметь возможность найти все статьи, которые написаны недавно, и написали о местах поблизости.
Я могу думать только о двух способах сделать это. Либо добавьте столбец широты и долготы в модель моей статьи, которая позволила бы мне обыскать @ Tools.nearby. Проблема с этим решением заключается в том, что кажется, что это не будет хорошим дизайном модели, поскольку место должно нести ответственность за проведение широты и долготы, а не каждая статья, написанная о месте.
Если вы можете сделать некоторые предложения о том, как я мог легко добиться этого, это было бы здорово, то есть!
Решение
Пара опций, которые могут работать для вас?
@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
.