Comment ajouter une valeur par défaut à une colonne existant déjà lors d'une migration?
Toute la documentation que je peux trouver vous montre comment le faire si la colonne n’existe pas déjà, mais dans ce cas elle le fait.
Comment ajouter une valeur par défaut à une colonne existant déjà lors d'une migration?
Toute la documentation que je peux trouver vous montre comment le faire si la colonne n’existe pas déjà, mais dans ce cas elle le fait.
À l'aide de def change
signifie que vous devriez écrire des migrations qui sont réversibles. Et change_column
n'est pas réversible. Vous pouvez aller jusqu'mais vous ne pouvez pas aller vers le bas, depuis change_column
est irréversible.
Au lieu de cela, si cela peut être un couple de lignes supplémentaires, vous devez utiliser def up
et def down
Donc, si vous avez une colonne avec pas de valeur par défaut, alors vous devriez le faire pour ajouter une valeur par défaut.
def up
change_column :users, :admin, :boolean, default: false
end
def down
change_column :users, :admin, :boolean, default: nil
end
Ou si vous voulez changer la valeur par défaut pour une colonne existante.
def up
change_column :users, :admin, :boolean, default: false
end
def down
change_column :users, :admin, :boolean, default: true
end
Exécuter:
rails generate migration add_column_to_table column:boolean
Il générera cette migration:
class AddColumnToTable < ActiveRecord::Migration
def change
add_column :table, :column, :boolean
end
end
Définir la valeur par défaut en ajoutant: default => 1
add_column: table,: column,: boolean,: default => 1
Courir:
rake db: migrer
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.