[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
・ 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
① 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.
"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.
① 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.
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```
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
① 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
① `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
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.
・ Https://qiita.com/kurawo___D/items/e3694f7a870a1cc4738e ・ Https://freesworder.net/rails-column-add-remove/ ・ Https://gist.github.com/seak0503/84bfa6b37a0a6961c334
Recommended Posts