У меня есть проблема, что у меня есть миграции в Rails, который устанавливает значение по умолчанию для столбца, как в этом примере:Rails миграция: Undo значения по умолчанию для столбца
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Предположит, мне нравится снимите настройки по умолчанию при последующей миграции, как мне это сделать, используя миграцию рельсов?
Мой текущий обходной путь является выполнение команды пользовательских SQL в миграции рельсы, как это:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Но мне не нравится этот подход, потому что я теперь зависит от того, как основная база данных интерпретируя эту команду. В случае изменения базы данных этот запрос, возможно, больше не работает, и миграция будет нарушена. Итак, есть ли способ выразить отмену установки по умолчанию для столбца в рельсах?
В postgres это фактически не уменьшит значение по умолчанию для столбцов «CHARACTER VARYING», просто установите для него значение «NULL :: character» '. –
В более поздних версиях вы можете сделать его обратимым. Например: 'change_column_default (: table_name,: column_name, from: nil, to: false)' – Mark
@AttilaO. У меня был успех с запуском 'ALTER TABLE table_name ALTER COLUMN типа DROP DEFAULT', нет необходимости устанавливать его в' NULL', я думаю. –