【问题标题】:Rails 3 gem 'geocoder' search functionality and model designRails 3 gem 'geocoder' 搜索功能和模型设计
【发布时间】:2023-04-09 00:14:01
【问题描述】:

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

我有一个 Article 模型和 Place 模型。一篇文章总是写关于一个地方的,所以一篇文章总是有一个 place_id。 Place 模型包含地点的地址以及地理编码器所需的 :latitude 和 :longitude 列。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    可能对您有用的几个选项?

    @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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多