改变Geokit“最接近”范围内的“限制”条款

时间:2014-01-13 16:41:08

标签: ruby-on-rails limit closest geokit

听起来并不困难,但在找了一段时间之后我找不到改变limitclosest范围的Geokit-rails的方法。

我试图覆盖此方法的定义,该定义根据文档定义:

    def closest(options = {})
       geo_scope(options).order("#{distance_column_name} asc").limit(1)
    end

但没有成功。

有什么想法吗?非常感谢你!

2 个答案:

答案 0 :(得分:0)

您可以覆盖此方法,例如:

 module Geokit
   def closest(options = {})
     geo_scope(options).order("#{distance_column_name} asc").limit(options[:limit] || 1)
   end
 end

并将此文件放在config / initializers文件夹中并重新启动服务器。注意:输入正确的模块名称,类。将其视为方法之路。

答案 1 :(得分:0)

这是geokit-rails / geokit的旧版本,现在的定义是:

def closest(options = {})
  by_distance(options).first(1)
end

因此无需覆盖任何内容,您的代码可以简单地说:

MyClass.by_distance(options).limit(my_limit)

注意:尽量避免猴子修补现有代码。如果你做了另一条评论中建议的内容,它现在可能会有效,但是一旦你更新了geokit / geokit-rails,你就有可能在实现发生变化的时候破坏它(例如,最接近的方法的实现方式有所不同。