我正在使用旧版系统进行重构,而在使用“点”数据类型时遇到了麻烦。
在Sequel Pro内部,我可以看到列“位置”值为POINT(-22.81507676827597 -47.07767857976228)
但是当我从数据库中查询它
Mysql2::Client.new(
host: ENV.fetch('LEGACY_DATABASE_HOST'),
username: ENV.fetch('LEGACY_DATABASE_USERNAME'),
password: ENV.fetch('LEGACY_DATABASE_PASSWORD'),
database: ENV.fetch('LEGACY_DATABASE_NAME')
).query("SELECT * FROM local").first('location')
我得到一个奇怪的结果,例如“ \ x00 \ x00 \ x00 \ x00 \ x01 \ x01 \ x00 \ x00 \ x00 \ x84y \ xFF \ xDE \ xA8 \ xD06 \ xC0 \ xE0 \ xD6'_ \ xF1 \ x89G \ xC0”,如果我尝试立即保存,它将变为0。
如何用Rails处理mysql中的点数据类型的正确方法?
答案 0 :(得分:1)
我强烈建议您使用activerecord-postgis-adapter gem,这使所有操作变得非常简单。尽管如果您自己决定要这样做,请深入研究该宝石,看看它们如何完成point
的工作。