tengo el problema, que tengo una migración en los carriles que establece un valor predeterminado para una columna, como en este ejemplo:Rieles migraciones: Deshacer ajuste por defecto para una columna
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Supongamos, me gusta soltar 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 personalizada en la migración de los carriles, así:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Pero no me gusta este enfoque, porque yo soy ahora depende de la forma subyacente es la base de datos interpretando este comando. En caso de un cambio en la base de datos, es posible que esta consulta ya no funcione y la migración se rompa. Entonces, ¿hay alguna manera de expresar el deshacer de una configuración predeterminada para una columna en rieles?
En postgres, esto no soltará el valor predeterminado para las columnas 'CHARACTER VARYING', simplemente ajústelo a' NULL :: character variation '. –
En versiones más recientes, puede hacer que sea reversible. Por ejemplo: 'change_column_default (: table_name,: column_name, from: nil, to: false)' – Mark
@AttilaO. He tenido éxito ejecutando 'ALTER TABLE table_name ALTER COLUMN type DROP DEFAULT', no hay necesidad de establecerlo en' NULL', creo. –