Rails 3 gem'地理编码器'搜索功能和模型设计

时间:2012-03-08 02:14:11

标签: ruby-on-rails ruby-on-rails-3 activerecord model rails-geocoder

我有一个关于地理编码器宝石的一般性问题,以及如何在导轨中设计我的模型以促进地理编码器的有用功能。

我有一个文章模型和Place模型。文章将始终写在一个地方,所以一篇文章总是有一个place_id。 Place模型包含地点的地址以及地理编码器所需的:纬度和:经度列。

geocoder有一个'nearbys'方法,可以让我找到给定地点附近的地方,例如@ place.nearbys会产生@place附近的地方集合。这很好,但我希望能够找到最近写的所有文章,并写下附近的地方。

我只能想到两种方法。将纬度和经度列添加到我的文章模型中,这样我就可以搜索@ articles.nearby。这个解决方案的问题在于它似乎不是很好的模型设计,因为Place应该负责保持纬度和经度,而不是每篇关于该地方的文章。

如果你能就我如何轻松实现这一目标提出一些建议,那就太棒了,那就好了!

1 个答案:

答案 0 :(得分:4)

可能适合您的几个选项?

@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
相关问题