[RUBY] [Rails] Ajout de colonnes / changement de type de données / nom de colonne

introduction

Une procédure typique pour ajouter des colonnes et modifier les noms de colonnes et les types de données est 1, vérifiez l'état actuel avec rails db: migrate: status 2 ⃣ Entrez une commande pour créer ou ajouter un fichier de migration dans le terminal (la commande diffère en fonction de l'opération que vous souhaitez effectuer) 3 ⃣ Décrivez les changements dans le fichier de migration (en cas d'ajout, vérifiez uniquement le contenu) 4⃣rails db:migrate``` Je pense (je suis désolé si c'est différent). Bien sûr, je pense que c'est aussi la bonne réponse. (J'utilise aussi les rails db: rollback) Je pense que la table peut disparaître mystérieusement à chaque fois que je vérifie la commande ou que je fais une faute de frappe ...

** Il semble y avoir un moyen simple si le contenu de l'enregistrement peut être effacé, (je suis désolé si vous savez) **

Méthode simple ci-dessus (plusieurs changements sont possibles en même temps)

1 ⃣ rails db: migrate: status``` pour vérifier l'état actuel (s'il n'y a pas de problème, passez à 2 ⃣) 2, réécrivez directement la partie du fichier de migration que vous avez déjà créée et que vous souhaitez modifier (veuillez l'ajouter si vous souhaitez l'ajouter) 3, exécutez `` rails db: migrate: reset '' pour terminer Consultez schema.rb!

rails db:migrate:En réinitialisant le fichier de migration existant**Utiliser tous**Et recréez la table. Par conséquent, toutes les parties réécrites et les parties ajoutées seront reflétées.(Même si une erreur se produit en raison d'une faute de frappe, elle sera principalement corrigée.)


 Cependant, si vous ne souhaitez pas supprimer l'enregistrement, vous devez l'utiliser correctement selon le cas, alors tapez la commande avec soin.

## Exemple
#### 1, vérification de l'état

#### **`rails db:migrate:exécution du statut`**

Il y a autant de fichiers de migration que la quantité sortie lorsque la commande est exécutée, et l'image sera comme les recréer tous en même temps dans le processus suivant.

Terminal


vocstartsoft:~/environment/bookers2-task (master) $ rails db:migrate:status #Courez ici

database: /home/ec2-user/environment/bookers2-task/db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200830060820  Devise create users      #L'État sortira, qu'il soit à la hausse ou à la baisse.
   up     20200830062142  Create books             #up est essentiellement migré
   up     20201101080413  Create book comments
  #Omis ci-dessous

2 ⃣ Ajout / modification du fichier de migration

Apportez le fichier de migration contenant le contenu que vous souhaitez ajouter / modifier dans le dossier ** db / migrate **. Cette fois, la ** colonne de titre ** et la ** colonne de corps ** utilisées pour la publication ont des types de données incorrects, je vais donc corriger cela (quel type d'erreur est booléen?)

db/migrate/20201115102020_create_books.rb


class CreateBooks < ActiveRecord::Migration[5.2]
  def change
    create_table :books do |t|
      t.integer :title          #← Je veux définir un entier sur une chaîne
      t.boolean :body           #← Je veux changer le booléen en texte
      t.integer :user_id
      t.timestamps
    end
  end
end

Réécrire (veuillez ajouter si vous souhaitez ajouter)

db/migrate/20201115102020_create_books.rb


      #↑ Omis
      t.string :title          #integer→string
      t.text :body             #boolean→text
      #↓ omis

3, Rails db: migrer: réinitialiser pour supprimer la base de données à la fois → créer

Terminal


$ rails db:migrate:reset

Si le terminal sort le même contenu que les rails habituels db: migrate, il n'y a probablement pas de problème. Vérifions schema.rb et voyons s'il a été modifié / ajouté correctement. Cela semble fastidieux, mais sachez que les informations utilisateur (nom, etc.) et le contenu publié que vous avez créé auraient dû disparaître.

prime

Différence entre les rails db: reset et les rails db: migrat: reset

Les deux commandes sont des commandes qui suppriment la base de données et la recréent, mais il semble y avoir une grande différence.

rails db:reset supprime le DB et le schéma actuel.Chargez rb et recréez le DB. db/migrate/~.rb ne semble pas être utilisé.



#### **`rails db:migrate:reset est une migration normale (db) après la suppression de la base de données:migrate) est effectuée. Autrement dit, db/migrate/~.Tous les rbs sont exécutés du plus ancien au plus récent.`**

Enfin, autres que les méthodes ci-dessus [Cliquez ici pour les articles d'ajout de colonnes] (https://qiita.com/jackie0922youhei/items/09a7b081e40506f07358) Cela a été utile, et au contraire, [Cliquez ici pour un article sur le contenu lorsque les rails db: migrate: reset ne peuvent pas être effectués] (https://qiita.com/mom0tomo/items/a252ff8a42eea00f81b1) Cela fait longtemps, mais je pense personnellement qu'il y a beaucoup d'erreurs compliquées autour de la DB, donc je suis content que cet article le résout! (Je suis désolé si ça ne s'améliore pas ...)

Recommended Posts

[Rails] Ajout de colonnes / changement de type de données / nom de colonne
[Rails] Comment changer le nom de colonne de la table
[Rails] Changer le nom de l'étiquette de f.label
[Ruby on Rails] Comment changer le nom de la colonne
[Ruby on Rails] Remplacez l'ID d'URL par le nom de la colonne
Utilisation du type booléen Rails
Résumé des bases de données de base de connaissances sur la migration: restauration et ajout / suppression de colonnes
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
[Ruby on Rails] Introduction des données initiales
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Comment changer le nom de l'application dans les rails
[Rails] Conservation temporaire des données par session
Rails Ajout d'une fonction de connexion facile et facile
[Rails] Obtenez le nom du chemin de l'URL avant la transition et modifiez la destination du lien
[Order method] Définit l'ordre des données dans Rails
[Rails] J'ai appris les types de types de données de base de données!
[Rails] Affichage des données de structure à plusieurs niveaux à l'aide de la boîte de sélection
[rails] Option After utile lorsque vous souhaitez modifier l'ordre des colonnes DB