вопрос
Я использую Rails 2.3 с плагином Spatial Adapter и базу данных Postgres 8.4 с расширением PostGIS.
Некоторое время назад геометрическое поле было добавлено в таблицу с помощью такой миграции:
add_column :my_table, :the_geom, :geometry, :srid => 4326
Наряду с полем создается ограничение размера таблицы. В этом случае он гарантирует, что геометрия, введенная в поле the_geom
, имеет ровно два измерения .
Теперь я хотел бы добавить геометрию с более чем двумя измерениями. Какой код миграции Rails можно использовать, чтобы либо изменить ограничение, чтобы разрешить более двух измерений, либо удалить его вообще?
Что не сработало
Когда я создаю новое геометрическое поле с помощью метода add_column
, я знаю, что могу использовать опции :with_z
и :with_m
, чтобы увеличить количество разрешенных измерений (ограничение будет разрешать до четырех измерений при использовании обоих опции).
Однако при использовании этих параметров с командой change_column
это никак не влияет на ограничение.
Я не хочу удалять столбец и повторно добавлять его, потому что тогда я потеряю все данные.
Я знаю, я могу использовать необработанный SQL для удаления ограничения (я мог бы также использовать задачу переноса или рейка в качестве оболочки). Проблема в том, что это не влияет на тестовую базу данных, потому что она всегда создается с нуля, когда я запускаю все тесты.