[RUBY] Résumé des bases de données de base de connaissances sur la migration: restauration et ajout / suppression de colonnes

introduction

[Connaissances acquises grâce à cet article] ・ À propos de la migration -Rails db: procédure d'exécution de rollback -Procédure d'ajout et de suppression de colonnes -Procédure d'ajout et de suppression lorsque la colonne est de type références

【environnement】 ・ MacOS Catalina ・ Rails 6.0.0 ・ Rubis 2.6.5

Qu'est-ce que la migration?

・ Dessins et spécifications de conception de table -A un rôle important dans la création de tables dans la base de données -Ecrire le type de colonne, le nom de la colonne et les informations sur les options dans le fichier de migration -Vous pouvez créer et modifier des tables en reflétant les informations

Procédure d'exécution de la migration

① Créer un modèle (2) Décrivez les informations nécessaires dans le fichier de migration (db / migrate / 2020 ~~~~ .rb) généré lors de la création du modèle.

db/migrate/20201014123456_create_address.rb


class CreateAddresses < ActiveRecord::Migration[6.0]
  def change
    create_table :addresses do |t|
    # t.Type de colonne:Nom de colonne,option
      t.string :postal_code,    null: false
      t.string :city,           null: false
      t.string :address_line,   null: false
      t.string :phone_number,   null: false
      t.references :order,      null: false, foreing_key: true
      t.timestamps
    end
  end
end

③ Exécuter rails db: migrez dans le terminal après avoir confirmé que vous êtes dans le répertoire de l'application que vous créez pour refléter les colonnes du tableau décrit.

% rails  db:migrate

④ Succès si le terminal a la description suivante!

== 20XXXXXXXXXXXX CreateAddresses: migrating ======================================
-- create_table(:addresses)
   -> 0.0395s
== 20XXXXXXXXXXXX CreatePosts: migrated (0.0396s) =============================

Au cas où, vérifiez si les informations décrites dans sequel pro sont affichées.


J'ai fait une erreur dans le tableau même si j'ai migré les rails db: migrate!

"Que devrais-je faire,,," Il y a des moments où vous dites: "Je veux modifier la migration!"

Cependant, une fois exécuté, il ne peut plus être exécuté. La raison en est que la conception est enregistrée comme un historique afin que vous puissiez vérifier les modifications que vous avez apportées ultérieurement.

Si vous souhaitez modifier le nom de la colonne en raison d'une faute d'orthographe, vous ne voulez pas prendre la peine de laisser la modification dans l'historique.

Dans ce cas, utilisez la commande `` rails db: rollback ''. (Étant donné que les informations reflétées peuvent être renvoyées, l'historique des modifications ne sera pas conservé.) Sinon, ** créez un fichier de migration pour ajouter / supprimer des colonnes ** et apporter des modifications. (L'historique reste car un nouveau fichier est créé et modifié.)

Je voudrais les expliquer ci-dessous.


rails db: procédure d'exécution de restauration ① ~ ⑥

① Vérifiez l'état du fichier de migration avec la commande rails db: migrate: status command` ''

% rails db:migrate:status

-Lorsqu'il est exécuté, l'historique de migration est affiché et l'état est affiché avec l'état haut et bas. ・ Up signifie qu'il a été exécuté, et down signifie qu'il peut être modifié.

# rails db:migrate:statut Résultat de l'exécution

database:nom de l'application_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20201001015223  Create orders
   up     20201001092756  Create addresses
   up     20201014023427  Add id to addresses
   up     20201014030100  Add id to orders

② Exécutez rails db: rollback``` pour passer de haut (exécuté) à bas (modifiable)

% rails db:rollback

③ Exécutez à nouveau `` rails db: migrate: status '' pour vérifier l'état du fichier de migration.

database:nom de l'application_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20201001015223  Create orders
   up     20201001092756  Create addresses
   up     20201014023427  Add id to addresses
  down    20201014030100  Add id to orders

④ Si vous pouvez confirmer que l'état du fichier de migration que vous souhaitez modifier est en panne, dans ce cas, modifiez le fichier db / migrate / 2020101430100_ ~~ .rb. ⑤ Exécutez rails db: migrate``` pour refléter les corrections.

% rails  db:migrate

⑥ Au cas où, vérifiez si les informations décrites dans sequel pro sont affichées.

【Information supplémentaire】

Si vous souhaitez restaurer un fichier de migration et le supprimer

rollback STEP=Valeur numérique(Quel est le numéro auquel vous souhaitez revenir du bas)Décrivez et exécutez comme ceci


 * Le bas est 1.

```terminal
#Si vous voulez reculer la seconde à partir du bas
% rails db:rollback STEP=2

Si vous vérifiez l'état, vous pouvez voir qu'il est descendu de bas en bas

database:nom de l'application_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20201001015223  Create orders
   up     20201001092756  Create addresses
  down    20201014023427  Add id to addresses
  down    20201014030100  Add id to orders

Après cela, modifiez le fichier de migration de la même manière et exécutez rails db: migrate```

Procédure d'exécution d'ajout / suppression de colonne (modèles 1 et 2)

Tout d'abord, comme connaissance préalable, écrivez add_column pour ajouter une colonne et `` `remove_column``` pour supprimer une colonne.

    #Ajouter une colonne
    add_column :users, :first_name, :string
    #Supprimer la colonne
    remove_column :users, :last_name, :string

Modèle 1: comment écrire dans l'ordre

① Exécutez nom du fichier de migration rail g `` Le nom du fichier doit être ```Ajouter le nom de la colonne Au nom de la table à laquelle il est ajouté `` Vers)

#Lors de l'ajout de la colonne de nom à la table Users
% rails g migration AddNameToUsers

Contenu du fichier généré

db/migrate/20200000000000_add_names_to_users.rb


class AddNamesToUsers < ActiveRecord::Migration[6.0]
  def change 
  end
end

(2) Décrivez les informations du fichier de migration nouvellement généré.

db/migrate/20200000000000_add_names_to_users.rb


class AddNamesToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string
  end
end

③ Exécutez rails db: migrate```

% rails  db:migrate

Modèle 2: Comment écrire dans un terminal

`nom du fichier de migration rail g Nom de colonne à ajouter: type d'exécution `

#Décrivez les informations détaillées de la colonne à ajouter
% rails g migration AddNameToUsers first_name:string last_name:string

Contenu du fichier généré (le fichier de migration est généré avec le contenu du fichier décrit)

db/migrate/20200000000000_add_names_to_users.rb


class AddNamesToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string
  end
end

② Exécutez rails db: migrate```

% rails  db:migrate

Ajout / suppression de colonne type de références Procédure d'exécution

Situation: ajoutez address_id comme clé externe à la table Orders

① Exécutez rails g migration file name` ``

# address_Lors de l'ajout de la colonne id à la table Orders
% rails g migration AddIdToOrders

② Ecrire dans le fichier généré

db/migrate/20201014000000_add_id_to_orders.rb


class AddIdToOrders < ActiveRecord::Migration[6.0]
  def change
    #ajouter à
    add_reference :orders, :address, foreign_key: true
    #Effacer
    remove_reference :orders, :address, foreign_key: true
  end
end

Points supplémentaires -Ce doit être add_reference -Ecrire Foreign_key: true (seulement si nécessaire) Point de suppression -Il doit être `` `` remove_reference

③ Exécutez rails db: migrate```

% rails  db:migrate

C'est tout pour l'explication! !!

Cela fait plus longtemps que prévu, mais j'espère que vous trouverez cet article utile. C'est facile une fois que vous vous y êtes habitué, alors apprenons-le pour que le développement se déroule sans heurts! Merci d'avoir regardé jusqu'à la fin.

référence

・ Https://qiita.com/kurawo___D/items/e3694f7a870a1cc4738e ・ Https://freesworder.net/rails-column-add-remove/ ・ Https://gist.github.com/seak0503/84bfa6b37a0a6961c334

Recommended Posts

Résumé des bases de données de base de connaissances sur la migration: restauration et ajout / suppression de colonnes
Résumé des connaissances de base des rails acquises par progate
Connaissance de base de Ruby on Rails
Rails Ajout d'une fonction de connexion facile et facile
Migration des rails Changements de colonne et ainsi de suite.
[Java] Résumé personnel des classes et méthodes (basique)
rails db: 〇〇 Résumé
[Rails] Ajout de colonnes / changement de type de données / nom de colonne
[Rails] Résumé de la commande de migration
Résumé de la commande [Rails] rails db
Résumé de FileInputStream et BufferedInputStream
Résumé des fonctions de base d'ImageJ
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0