Tengo el problema, que tengo una migración en Rails que establece una configuración predeterminada para una columna, como este ejemplo:
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Supongamos que me gusta eliminar esa configuración predeterminada en una migración posterior, ¿cómo hago eso con el uso de migraciones de rieles?
Mi solución actual es la ejecución de un comando sql personalizado en la migración de rails, así:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Pero no me gusta este enfoque, porque ahora dependo de cómo la base de datos subyacente está interpretando este comando. En caso de un cambio en la base de datos, esta consulta tal vez no funcione más y la migración se interrumpiría. Entonces, ¿hay alguna manera de expresar el deshacer de una configuración predeterminada para una columna en rieles?
ruby-on-rails
rails-migrations
wulfovitch
fuente
fuente
CHARACTER VARYING
columnas, solo configúrelo enNULL::character varying
.change_column_default(:table_name, :column_name, from: nil, to: false)
ALTER TABLE table_name ALTER COLUMN type DROP DEFAULT
, noNULL
creo que sea necesario configurarlo .Parece que estás haciendo lo correcto con tu 'ejecutar', como lo señalan los documentos:
fuente
El siguiente fragmento que uso para hacer
NULL
columnasNOT NULL
, pero omitoDEFAULT
a nivel de esquema:fuente
Carriles 4
fuente