Ruby on rails 通过偏移实现多边形列

Ruby on rails 通过偏移实现多边形列,ruby-on-rails,postgresql,migration,polygon,postgis,Ruby On Rails,Postgresql,Migration,Polygon,Postgis,我正在尝试将我的多边形列类型更改为多多边形列类型 我的代码很简单 change_column :messages, :area_shape, :multipolygon, srid: 3785 但是Postgres不知道这种类型。我想我在我的PostGIS配置中遗漏了一些东西,但我看不到 这就是我的错误: rake aborted! PG::UndefinedObject: ERROR: type "multipolygon" does not exist : ALTER TABLE "me

我正在尝试将我的
多边形
列类型更改为
多多边形
列类型

我的代码很简单

change_column :messages, :area_shape, :multipolygon, srid: 3785
但是
Postgres
不知道这种类型。我想我在我的
PostGIS
配置中遗漏了一些东西,但我看不到

这就是我的错误:

rake aborted!
PG::UndefinedObject: ERROR:  type "multipolygon" does not exist
: ALTER TABLE "messages" ALTER COLUMN "area_shape" TYPE multipolygon
这就是我如何将我的
区域\u形状
创建为
多边形
类型的方法:

add_column :messages, :area_shape, :polygon, srid: 3785

谢谢您的帮助。

我不知道
RGeo
如何尝试实现
change\u column
(是否有相关文档?)

如果您可以从以下位置直接访问PostgreSQL,请使用此DDL:

ALTER TABLE my_table
  ALTER COLUMN area_shape TYPE geometry(MultiPolygon,3785)
    USING ST_Multi(area_shape);

最后,我不得不删除并重新创建我的专栏:

remove_column :messages, :area_shape
add_column :messages, :area_shape, :multi_polygon, srid: 3785
我想我现在可以理解为什么不可能了。事实上,在不丢失数据逻辑的情况下,将
多边形
类型更改为
多多边形
类型似乎很困难

如果您真的需要更改类型,您可以使用@Mike(手动)所说的内容,创建一个小方法将
多边形
转换为
多多边形
,但在我看来这并不安全。
提示:一个
multi_polygon
类型是一个
可枚举的
,意思是
multi_polygon
接受
数组
类型。

它工作得非常好谢谢!顺便说一句,我确实需要使用迁移,因为我可以在我的开发环境中这样做,但对于生产环境,我不能。我会尝试找到这个迁移的解决方案,如果我找到了,我会在这里添加解决方案。我担心,你把postgres自己的
多边形
类型(第一个链接)和postgis的
几何体
类型(第二个链接)弄混了。有同样的问题。奇怪的是,它说类型不存在,而不是说它无法转换。