听起来一点也不难,但找了一段时间后,我找不到改变limit
范围closest
的方法Geokit-rails
。
我试图覆盖根据文档定义的此方法的定义:
def closest(options = {})
geo_scope(options).order("#{distance_column_name} asc").limit(1)
end
但没有成功。
任何想法?非常感谢!
听起来一点也不难,但找了一段时间后,我找不到改变limit
范围closest
的方法Geokit-rails
。
我试图覆盖根据文档定义的此方法的定义:
def closest(options = {})
geo_scope(options).order("#{distance_column_name} asc").limit(1)
end
但没有成功。
任何想法?非常感谢!
那是 geokit-rails/geokit 的旧版本,现在的定义是:
def closest(options = {})
by_distance(options).first(1)
end
所以不需要覆盖任何东西,你的代码可以简单地说:
MyClass.by_distance(options).limit(my_limit)
注意:尽量避免猴子修补现有代码。如果您执行了另一条评论中建议的操作,它现在可能会起作用,但是一旦您更新 geokit/geokit-rails,您就有可能因为实现发生变化而破坏它(例如,最接近的方法的实现方式截然不同。
您可以覆盖此方法,例如:
module Geokit
def closest(options = {})
geo_scope(options).order("#{distance_column_name} asc").limit(options[:limit] || 1)
end
end
并将此文件放入 config/initializers 文件夹并重新启动服务器。注意:输入正确的模块名称,类。将其视为方法的路径。