0

听起来一点也不难,但找了一段时间后,我找不到改变limit范围closest的方法Geokit-rails

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

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

但没有成功。

任何想法?非常感谢!

4

2 回答 2

0

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

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

所以不需要覆盖任何东西,你的代码可以简单地说:

MyClass.by_distance(options).limit(my_limit)

注意:尽量避免猴子修补现有代码。如果您执行了另一条评论中建议的操作,它现在可能会起作用,但是一旦您更新 geokit/geokit-rails,您就有可能因为实现发生变化而破坏它(例如,最接近的方法的实现方式截然不同。

于 2014-01-13T20:33:44.203 回答
0

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

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

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

于 2014-01-13T16:50:03.597 回答