我有一个关于地理编码器宝石的一般性问题,以及如何在导轨中设计我的模型以促进地理编码器的有用功能。
我有一个文章模型和Place模型。文章将始终写在一个地方,所以一篇文章总是有一个place_id。 Place模型包含地点的地址以及地理编码器所需的:纬度和:经度列。
geocoder有一个'nearbys'方法,可以让我找到给定地点附近的地方,例如@ place.nearbys会产生@place附近的地方集合。这很好,但我希望能够找到最近写的所有文章,并写下附近的地方。
我只能想到两种方法。将纬度和经度列添加到我的文章模型中,这样我就可以搜索@ articles.nearby。这个解决方案的问题在于它似乎不是很好的模型设计,因为Place应该负责保持纬度和经度,而不是每篇关于该地方的文章。
如果你能就我如何轻松实现这一目标提出一些建议,那就太棒了,那就好了!
答案 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