Eu tenho o problema, que eu tenho uma migração no Rails que define uma configuração padrão para uma coluna, como este exemplo:
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Suponha que eu gostaria de eliminar essas configurações padrão em uma migração posterior. Como faço isso usando migrações de trilhos?
Minha solução atual é a execução de um comando sql personalizado na migração de rails, assim:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Mas não gosto dessa abordagem, porque agora estou dependente de como o banco de dados subjacente está interpretando esse comando. Em caso de alteração do banco de dados, talvez essa consulta não funcione mais e a migração seja interrompida. Então, existe uma maneira de expressar o desfazer de uma configuração padrão para uma coluna nos trilhos?
ruby-on-rails
rails-migrations
wulfovitch
fonte
fonte
CHARACTER VARYING
colunas, apenas defina-o comoNULL::character varying
.change_column_default(:table_name, :column_name, from: nil, to: false)
ALTER TABLE table_name ALTER COLUMN type DROP DEFAULT
, não há necessidade de configurá-lo paraNULL
eu acho.Parece que você está fazendo a coisa certa com o seu 'execute', como os documentos apontam:
fonte
O seguinte trecho que eu uso para criar
NULL
colunasNOT NULL
, mas pularDEFAULT
no nível do esquema:fonte
Trilhos 4
fonte