activerecord(rails)migration - 设置列的选项值

时间:2013-08-14 00:58:54

标签: ruby-on-rails postgis optional-parameters rails-migrations rgeo

对于某些列,我正在将rgeo gem与activerecord-postgis-adapter gem结合使用,我希望将更改作为现有列的选项

请允许我这样显示,在schema.rb文件中,当前这是记录列的行

t.spatial  "shape", :limit => {:srid=>0, :type=>"multi_polygon"}

所以这个专栏有一些postgis认可的特殊元标记选项。

我想将:shape列的0列的默认srid设置为4326。我想要通过迁移来做这件事,甚至更好,以便能够单独设置这些点的值。目前,我没有在RGeo文档中找到一个setter方法:srid标签,只有一个读者。所以我认为我最好的选择是迁移。

我试过这个:

change_column :parcels, :shape, :srid, 4326

但得到了这个错误:

==  AddSridOptToShapes: migrating =============================================
-- change_column(:zones, :shape, :srid, 4326)
rake aborted!
An error has occurred, this and all later migrations canceled:

can't convert Symbol into Integer

我知道可以通过执行一串SQL来解决这个问题,但我希望活动记录也能提供一种方法

1 个答案:

答案 0 :(得分:0)

我通过简单地创建一个新列解决了这个问题,在我的例子中,我需要使用特定shapefile记录的每个投影

:proj_shape_0
:proj_shape_3361
:proj_shape_2264

等,其中数字是srid代码