C'est la première fois que je touche à la migration Rails, je vais donc l'écrire brièvement sous forme de mémorandum d'étude.
La migration est un moyen pratique et unifié d'apporter des modifications continues à votre schéma de base de données.
Préparer le tableau de l'entreprise comme exemple
Nom de colonne | Type de données |
---|---|
id | integer |
name | string |
description | text |
created_at | datetime |
updated_at | datetime |
$ rails g migration CrateCompany
Active Record affiche automatiquement l'ordre d'exécution de la migration avec l'horodatage du nom de fichier.
Le fichier créé est enregistré dans le répertoire db / migrate
.
Fichier créé
class CrateCompany < ActiveRecord::Migration[5.2]
def change
end
end
ActiveRecord :: Migration [] contient la version.
Vous pouvez utiliser haut et bas au lieu de changer. Écrivez le contenu lors de la migration dans la méthode up et le contenu lors de la restauration dans la méthode down.
class CrateCompany < ActiveRecord::Migration[5.2]
def up
end
def down
end
end
Créez un fichier de migration et tapez «rails db: migrate» pour l'exécuter.
Aussi, pour annuler la dernière modification, rails db: rollback
class CrateCompany < ActiveRecord::Migration[5.2]
def change
create_table :companies do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
Si vous tapez cette commande, elle créera automatiquement quelque chose comme ci-dessus
$ rails g migration CrateCompany name:string description:text
class ChangeTableCompany < ActiveRecord::Migration[5.2]
def change
change_table :companies do |t|
t.remove :name
t.string :root_number
t.index :root_number
t.rename :description, :description_note
end
end
end
La migration ci-dessus supprime la colonne de nom, crée une colonne de chaîne, numéro_racine, et y ajoute un index. Et enfin, la colonne de description est renommée.
change_column :companies, :root_number, :text
Changement de la colonne numéro_racine
du nom du modèle en texte
.
Notez que change_column
ne peut pas être annulé avec la méthode change
.
La méthode change
ne la prend pas en charge.
Les définitions de migration prises en charge par change
sont
add_column add_foreign_key add_index add_reference add_timestamps change_column_default (en spécifiant: from et: to ne peut pas être omis) change_column_null create_join_table create_table disable_extension drop_join_table drop_table (doit passer un bloc) enable_extension remove_column (le type doit être spécifié) remove_foreign_key (doit spécifier la deuxième table) remove_index remove_reference remove_timestamps rename_column rename_index rename_table
Si vous voulez revenir en arrière, vous pouvez utiliser change_column
s'il s'agit d'une méthode vers le haut ou vers le bas.
class ChangeColumnCompany < ActiveRecord::Migration[5.2]
def up
change_column :companies, :root_number, :text
end
def down
change_column :companies, :root_number, :string
end
end
Je ne sais pas encore grand-chose sur la migration, mais je veux l'apprendre.
Recommended Posts