0

向大家问好!
正如我在文档中发现的那样, ActiveRecord 应支持非本地类型。
我尝试创建一个新的“Route”模型然后迁移,但我得到了这个:

$ rails g model Route note:text route:path
...
$ rake db:migrate
undefined method `path' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition
...

也许我错过了什么?

PostgreSQL - 9.2.4,gem 'pg' - 0.15.0

请原谅我奇怪的英语。干杯。

4

3 回答 3

1

ActiveRecord 仅支持生成迁移的常见本机类型。这些类型被硬编码为:

%w( string text integer float decimal datetime timestamp time date binary boolean)

它还支持一些“虚拟”助手类型:timestampsreferences

但是,您可以将列生成为其他内容(例如整数),然后将生成的代码修改为如下所示:

create_table :routes do |t|
  t.text :note
  t.column :route, :path
end
于 2013-04-22T14:44:32.263 回答
0

据此,现在可用。

除点外的所有几何类型都映射到普通文本。一个点被转换为一个包含 x 和 y 坐标的数组。

我可以确认我能够创建具有路径类型的模型。该路径在 Rails 中转换为字符串,但在 PostgreSQL 数据库中保存为路径。

于 2018-02-23T19:04:05.160 回答
0

Rails 5开始,您可以在运行迁移时使用特定的几何数据类型命令,所以现在您可以使用

t.path :coordinates

代替

t.column :coordinates, :path

  • 假设你在你的create_table块内

您可以在PostgreSQL 适配器文件中查看所有可用选项。

在官方 PostgreSQL 文档(当前版本 10.5)中查找有关几何类型(点、线、lseg、框、路径、多边形、圆)和几何函数(相交?、包含?、距离等)的更多详细信息。

如果您需要更强大的功能并处理空间数据,请尝试使用Active Record PostGIS 适配器gem。

于 2018-10-15T19:54:16.790 回答