У меня проблема в том, что у меня есть миграция в Rails, которая устанавливает настройки по умолчанию для столбца, как в следующем примере:
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Предположим, мне нравится отбрасывать эти настройки по умолчанию в более поздней миграции, как мне это сделать с помощью rails-миграций?
Мой текущий обходной путь - выполнение пользовательской команды sql в миграции rails, например:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Но мне не нравится этот подход, потому что теперь я зависим от того, как базовая база данных интерпретирует эту команду. В случае изменения базы данных этот запрос, возможно, может больше не работать, и миграция будет прервана. Итак, есть ли способ выразить отмену настройки по умолчанию для столбца в рельсах?
ruby-on-rails
rails-migrations
wulfovitch
источник
источник
CHARACTER VARYING
столбцов, просто установите его наNULL::character varying
.change_column_default(:table_name, :column_name, from: nil, to: false)
ALTER TABLE table_name ALTER COLUMN type DROP DEFAULT
,NULL
я думаю , нет необходимости устанавливать его .Похоже, что вы правильно делаете со своим «execute», как указывают документы:
источник
Следующий фрагмент, который я использую для создания
NULL
столбцовNOT NULL
, но пропускаюDEFAULT
на уровне схемы:источник
Рельсы 4
источник