ho il problema, che ho un migrazione Rails che imposta un valore predefinito per una colonna, come in questo esempio:Rotaie migrazioni: Ripristino impostazione predefinita per una colonna
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Supponiamo, mi piace eliminare le impostazioni predefinite in una migrazione successiva, come faccio a utilizzare le migrazioni dei binari?
mia soluzione attuale è l'esecuzione di un comando SQL personalizzata nella migrazione rotaie, in questo modo:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Ma non mi piace questo approccio, perché io sono ora dipende da come il database sottostante è interpretare questo comando. In caso di modifica del database, questa query potrebbe non funzionare più e la migrazione verrebbe interrotta. Quindi, c'è un modo per esprimere l'annullamento di un'impostazione predefinita per una colonna nei binari?
In postgres, questo in realtà non farà cadere il default per le colonne 'CHARACTER VARYING', basta impostarlo su' NULL :: carattere che varia '. –
Nelle versioni più recenti, è possibile renderlo reversibile. Ad esempio: 'change_column_default (: table_name,: column_name, from: nil, to: false)' – Mark
@AttilaO. Ho avuto successo eseguendo 'ALTER TABLE nome_tabella ALTER COLUMN tipo DROP DEFAULT', non c'è bisogno di impostarlo su' NULL', penso. –