ruby - 使用 Sinatra 和 ActiveRecord 设置地理编码器?
问题描述
我有一个使用 ActiveRecord 和 Sinatra 访问的 MYSQL 数据库。我正在尝试对表中的记录执行某些地理定位任务。
但是,我相信我的语法是错误的,因为扩展地理编码器类会使我的 CRUD 请求失败:
我的应用程序.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
我要执行的查询是:
Post.near([@lat, @long], @dist, units: :km).offset(10 * @var.to_i).first(10)
这里的这个 stackoverflow 线程还建议我需要设置其他参数,例如attr_accessors
. 我该如何设置重写上面的内容,以便我可以使用 Geocoder 的near
方法?
解决方案
我通过添加以下内容来修复上述问题:
require 'geocoder'
和
reverse_geocoded_by :latitude, :longitude
推荐阅读
- java - 如何在 Pattern.compile("\\R").splitAsStream(input) 中包含尾随空字符串?
- javascript - 工作箱服务人员在除 Chrome 之外的任何地方工作:未捕获(承诺)DOMException
- scala - 是否收到询问模式覆盖消息
- laravel-5 - 是否有任何包或东西可以与 laravel-5.0 一起使用,将视频从我的 laravel 视图上传到单个 youtube 频道
- angular - 如何防止 mat-select 在值选择时跳转到选定值?
- html - 如何更改悬停框中的图像
- rxjs - rxjs:组合两个流,但在第二个发送事件后取消第一个
- php - 如何在 PHP Codeigniter 中修复日期格式
- asterisk - 如何使用 PJSIP 在 Asterisk 上转发 sip 呼叫?
- php - 想要在 mongodb 驱动程序类中执行“或”查询