听起来并不困难,但在找了一段时间之后我找不到改变limit
中closest
范围的Geokit-rails
的方法。
我试图覆盖此方法的定义,该定义根据文档定义:
def closest(options = {})
geo_scope(options).order("#{distance_column_name} asc").limit(1)
end
但没有成功。
有什么想法吗?非常感谢你!
答案 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,你就有可能在实现发生变化的时候破坏它(例如,最接近的方法的实现方式有所不同。