ruby-on-rails - rails - ruby migration types




Rails migrations: Annuler le paramètre par défaut pour une colonne (3)

L'extrait suivant que j'utilise pour rendre les colonnes NOT NULL , mais ignorer DEFAULT au niveau du schéma:

def self.up
  change_column :table, :column, :string, :null => false, :default => ""
  change_column_default(:table, :column, nil)
end

J'ai le problème, que j'ai une migration dans Rails qui configure un paramètre par défaut pour une colonne, comme cet exemple:

def self.up
  add_column :column_name, :bought_at, :datetime, :default => Time.now
end

Supposons que j'aime laisser tomber ces paramètres par défaut lors d'une migration ultérieure, comment puis-je le faire en utilisant les migrations de rails?

Ma solution de contournement actuelle est l'exécution d'une commande SQL personnalisée dans la migration des rails, comme ceci:

def self.up
  execute 'alter table column_name alter bought_at drop default'
end

Mais je n'aime pas cette approche, car je dépends maintenant de la façon dont la base de données sous-jacente interprète cette commande. En cas de changement de la base de données, cette requête pourrait ne plus fonctionner et la migration pourrait être interrompue. Alors, existe-t-il un moyen d'exprimer l'annulation d'un paramètre par défaut pour une colonne dans les rails?


Rails 4

change_column :courses, :name, :string, limit: 100, null: false

change_column_default(table_name, column_name, nil) également de supprimer entièrement la valeur par défaut de la colonne. Pas besoin d'utiliser exécuter.







rails-migrations