Geocoder : ArgumentError: wrong number of arguments (3 for 0..1)
Geocoder : ArgumentError: wrong number of arguments (3 for 0..1)
我读了很多关于这个问题的文章,但我没有找到解决问题的方法。
我创建了一个 rake 任务,可以在我的数据库中找到所有学校,并找到所有高级学校。感谢 Geocoder,我想显示非高级学校中最近的 3 所高级学校。但是当我启动我的任务时,出现了这个错误:
rake aborted!
ArgumentError: wrong number of arguments (3 for 0..1)
/Users/marchardantonin/.rvm/gems/ruby-2.0.0-p648/gems/origin-2.1.1/lib/origin/selectable.rb:334:in `near'
/Users/marchardantonin/Sites/Vroom2017/vroomvroom-web/lib/tasks/geocodeschool.rake:8:in `block (3 levels) in <top (required)>'
/Users/marchardantonin/.rvm/gems/ruby-2.0.0-p648/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:668:in `yield_document'
这是代码:
geocoderschool.rake
namespace :geocodeschool do
desc "Show premium school near non-premium school and update them"
task :schgc => :environment do
@schools = School.all
@schools_premium = @schools.premium_school
radius = 30
@schools.each do |school|
@schools_aside = @schools_premium.near(school.coordinates.reverse, radius, units: :km).limit(3)
puts "les auto-écoles premiums : #{@shcools_aside.count}"
puts "-------"
@schools_aside.each do |sa|
puts sa.title
end
puts "-------"
end
end
end
school.rb
scope :premium_school, -> {where(:subscription.exists => true).where("subscription.current_period_end" => {'$gte' => Date.today})}
embeds_one :geocodeschool
accepts_nested_attributes_for :geocodeschool
地理编码school.rb
class Geocodeschool
include Mongoid::Document
embedded_in :school
field :school_premium_aside, type: Array
end
有人可以向我解释错误并帮助我找到问题吗?
谢谢!
您可能应该看一下official documentations gem。它只接受一个散列作为参数,例如:
@schools_premium.near(location: [ 23.1, 12.1 ])
查看 Mongoid code,您似乎应该这样使用 geo_near
:
@schools_premium.geo_near(school.coordinates.reverse).max_distance(0.5)
应在模型上调用 Geocode 的 near
方法,发送坐标。
所以,在PremiumSchool
模型上调用它,并将坐标发送到@schools_premium
@schools_aside = School.near(@schools_premium.coordinates.reverse, radius, units: :km).limit(3)
我读了很多关于这个问题的文章,但我没有找到解决问题的方法。 我创建了一个 rake 任务,可以在我的数据库中找到所有学校,并找到所有高级学校。感谢 Geocoder,我想显示非高级学校中最近的 3 所高级学校。但是当我启动我的任务时,出现了这个错误:
rake aborted!
ArgumentError: wrong number of arguments (3 for 0..1)
/Users/marchardantonin/.rvm/gems/ruby-2.0.0-p648/gems/origin-2.1.1/lib/origin/selectable.rb:334:in `near'
/Users/marchardantonin/Sites/Vroom2017/vroomvroom-web/lib/tasks/geocodeschool.rake:8:in `block (3 levels) in <top (required)>'
/Users/marchardantonin/.rvm/gems/ruby-2.0.0-p648/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:668:in `yield_document'
这是代码:
geocoderschool.rake
namespace :geocodeschool do
desc "Show premium school near non-premium school and update them"
task :schgc => :environment do
@schools = School.all
@schools_premium = @schools.premium_school
radius = 30
@schools.each do |school|
@schools_aside = @schools_premium.near(school.coordinates.reverse, radius, units: :km).limit(3)
puts "les auto-écoles premiums : #{@shcools_aside.count}"
puts "-------"
@schools_aside.each do |sa|
puts sa.title
end
puts "-------"
end
end
end
school.rb
scope :premium_school, -> {where(:subscription.exists => true).where("subscription.current_period_end" => {'$gte' => Date.today})}
embeds_one :geocodeschool
accepts_nested_attributes_for :geocodeschool
地理编码school.rb
class Geocodeschool
include Mongoid::Document
embedded_in :school
field :school_premium_aside, type: Array
end
有人可以向我解释错误并帮助我找到问题吗?
谢谢!
您可能应该看一下official documentations gem。它只接受一个散列作为参数,例如:
@schools_premium.near(location: [ 23.1, 12.1 ])
查看 Mongoid code,您似乎应该这样使用 geo_near
:
@schools_premium.geo_near(school.coordinates.reverse).max_distance(0.5)
应在模型上调用 Geocode 的 near
方法,发送坐标。
所以,在PremiumSchool
模型上调用它,并将坐标发送到@schools_premium
@schools_aside = School.near(@schools_premium.coordinates.reverse, radius, units: :km).limit(3)