Pergunta

Tenho uma espécie de pergunta geral sobre a gema do geocodificador e como projetar meus modelos em trilhos para facilitar os recursos úteis do geocodificador.

Eu tenho um modelo de artigo e um modelo de local.Um artigo sempre será escrito sobre um local, portanto, um artigo sempre terá um place_id.O modelo Place contém o endereço do local e as colunas :latitude e :longitude que o geocodificador requer.

geocoder tem um método 'nearbys' que me permite encontrar lugares próximos a um determinado local, por exemplo @place.nearbys produziria uma coleção de lugares próximos a @place.Isso é ótimo, mas quero encontrar todos os artigos escritos recentemente e sobre lugares próximos.

Só consigo pensar em duas maneiras de fazer isso.Adicione uma coluna de latitude e longitude ao meu modelo de artigo, o que me permitiria pesquisar @articles.nearby.O problema com esta solução é que parece que não seria um bom design de modelo, já que um Local deveria ser responsável por manter a latitude e a longitude, e não todos os artigos escritos sobre o local.

Se você puder fazer algumas sugestões sobre como eu poderia conseguir isso facilmente, seria ótimo, obrigado!

Foi útil?

Solução

algumas opções que podem funcionar para você?

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

carregue lentamente os artigos dos lugares, mas limite os resultados

@place = Place.find(params[:id])
@place.nearbys(@distance).each do |place|
    place.articles.order("created_at desc").limit(3).each do |article|
        # ...
    end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top