Am o bază de date MySQL, care este accesat folosind ActiveRecord și Sinatra. Încerc să îndeplinească anumite sarcini geolocalizare pe înregistrările din tabele.
Cu toate acestea, cred că sintaxa mea este greșit ca extinderea clasei geocoder face cererea mea CRUD eșuează:
myapp.rb
require 'rubygems'
require 'sinatra'
require 'active_record'
require 'table_print'
require 'json'
ActiveRecord::Base.establish_connection(
:adapter => mysql2,
:host => localhost,
:username => root,
:database => orbital
)
class Post < ActiveRecord::Base
extend Geocoder::Model::ActiveRecord
# attr_accessor :latitude, :longitude
end
class Comment < ActiveRecord::Base
#extend Geocoder::Model::ActiveRecord
end
class MyApp < Sinatra::Application
#extend Geocoder::Model::ActiveRecord
end
post '/post' do
@user = params[:user]
@content = params[:content]
@latitude = params[:latitude]
@longitude = params[:longitude]
@timestamp = params[:timestamp]
record = Post.create(user: @user, content: @content, longitude: @longitude, latitude: @latitude, timestamp: @timestamp)
record.save
end
Interogarea am încercat să efectueze este:
Post.near([@lat, @long], @dist, units: :km).offset(10 * @var.to_i).first(10)
Acest fir StackOverflow aici , de asemenea , sugerează că am nevoie să setați argumente suplimentare , cum ar fi attr_accessors. Cum pot merge despre configurarea rescrierea cele de mai sus astfel încât i se poate utiliza geocoder lui nearmetoda?













