ruby-on-rails - ActiveRecord 将字段设置为 SQL 表达式

标签 ruby-on-rails ruby activerecord spatialite

我使用的是 Ruby 1.8.7 和 Rails 2.3.8,并且有多个位置由纬度和经度表示。我正在使用 SQLite SpatiaLite 扩展将坐标转换为众所周知的二进制 (WKB) 格式。我关心的是如何让 ActiveRecord 执行插入或更新,调用适当的 SpatiaLite 转换方法。我希望做这样的事情:

obj.geometry = "AsBinary(MakePoint(4, 51))"
obj.save
# ActiveRecord would now do something like:
# INSERT INTO objects (geometry) VALUES (AsBinary(MakePoint(4, 51)))

这可以用 ActiveRecord 实现吗?

我已经尝试过 GeoRuby,但虽然它能够正确读取 WKB blob,但无法将它们保存为与 SpatiaLite 相同的格式。

谢谢!

最佳答案

我还没有使用 GeoRuby,但是对于空间数据,我使用了带有 @geodist 功能的 thinking-sphinx,使用工具非常好。

一些你可以阅读的资源:

关于ruby-on-rails - ActiveRecord 将字段设置为 SQL 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091049/

相关文章:

ruby-on-rails - 尽管有 Rails 路由输出结果,但 Rails 没有路由匹配

ruby-on-rails - 使用 Dockerfile 克隆私有(private) git gem 存储库的最佳方法

arrays - 删除数组中的重复元素

ruby-on-rails - Rails 自定义 ActiveRecord::Type 在 has_many 中使用 `class_name` 时失败:通过关联

ruby - 映射两个 Nokogiri 对象

ruby-on-rails - Rails 3 ActiveRecord : Find model by finding it's association

ruby-on-rails - Rails ActiveRecord 关系助手如何允许诸如 `user.groups.new` 之类的方法?

html - Ruby on Rails/HTML - 内联表单 :checked => false is not working

ruby-on-rails - Rails - Controller 中的 NoMethodError

ruby - 如何神奇地为 Active Record 范围提供参数?