[RUBY] Zusammenfassung der grundlegenden Migrationswissensschienen db: Rollback und Hinzufügen / Löschen von Spalten

Einführung

[Erkenntnisse aus diesem Artikel] ・ Informationen zur Migration -Rails db: Rollback-Ausführungsprozedur -Verfahren zum Hinzufügen und Löschen von Spalten -Verfahren zum Hinzufügen und Löschen, wenn die Spalte Typreferenzen enthält

【Umgebung】 ・ MacOS Catalina ・ Schienen 6.0.0 ・ Ruby 2.6.5

Was ist Migration?

・ Konstruktionszeichnungen und Spezifikationen der Tabelle -Hat eine wichtige Rolle beim Erstellen von Tabellen in der Datenbank -Schreiben Sie den Spaltentyp, den Spaltennamen und die Optionsinformationen in die Migrationsdatei -Sie können Tabellen erstellen und ändern, indem Sie die Informationen widerspiegeln

Ausführungsverfahren für die Migration

① Erstellen Sie ein Modell (2) Beschreiben Sie die erforderlichen Informationen in der Migrationsdatei (db / migrate / 2020 ~~~~ .rb), die beim Erstellen des Modells generiert wurde.

db/migrate/20201014123456_create_address.rb


class CreateAddresses < ActiveRecord::Migration[6.0]
  def change
    create_table :addresses do |t|
    # t.Spaltentyp:Spaltenname,Möglichkeit
      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

③ Schienen ausführen db: Migrieren Sie im Terminal, nachdem Sie bestätigt haben, dass Sie sich im Verzeichnis der Anwendung befinden, die Sie erstellen, um die Spalten der beschriebenen Tabelle wiederzugeben.

% rails  db:migrate

④ Erfolgreich, wenn das Terminal die folgende Beschreibung hat!

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

Überprüfen Sie für alle Fälle, ob die in Sequel Pro beschriebenen Informationen angezeigt werden.


Ich habe einen Fehler in der Tabelle gemacht, obwohl ich Rails migriert habe. Db: migrate!

"Was soll ich machen,,," Es gibt Zeiten, in denen Sie sagen: "Ich möchte die Migration bearbeiten!"

Sobald es ausgeführt wird, kann es jedoch nicht mehr ausgeführt werden. Der Grund dafür ist, dass das Design als Verlauf aufgezeichnet wird, damit Sie überprüfen können, welche Änderungen Sie später vorgenommen haben.

Wenn Sie den Spaltennamen aufgrund einer Rechtschreibfehler ändern möchten, möchten Sie die Änderung nicht im Verlauf belassen.

Verwenden Sie in diesem Fall den Befehl `Rails db: rollback `. (Da die reflektierten Informationen zurückgegeben werden können, bleibt der Änderungsverlauf nicht erhalten.) Andernfalls ** erstellen Sie eine Migrationsdatei zum Hinzufügen / Entfernen von Spalten ** und nehmen Sie Änderungen vor. (Der Verlauf bleibt erhalten, da eine neue Datei erstellt und geändert wird.)

Ich möchte diese unten erklären.


Schienen db: Rollback-Ausführungsprozedur ① ~ ⑥

① Überprüfen Sie den Status der Migrationsdatei mit dem Befehl `Rails db: migrate: status `

% rails db:migrate:status
# rails db:migrate:Status Ausführungsergebnis

database:App Name_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

② Führen Sie `` `Rails db: Rollback``` aus, um nach oben (ausgeführt) nach unten (modifizierbar) zu wechseln.

% rails db:rollback

③ Führen Sie `` `Rails db: migrate: status``` erneut aus, um den Status der Migrationsdatei zu überprüfen.

database:App Name_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

④ Wenn Sie bestätigen können, dass der Status der zu ändernden Migrationsdatei nicht gültig ist, ändern Sie in diesem Fall die Datei db / migrate / 2020101430100_ ~~ .rb. ⑤ Führen Sie `` `Rails db: migrate``` aus, um die Korrekturen widerzuspiegeln

% rails  db:migrate

⑥ Überprüfen Sie für alle Fälle, ob die in Sequel Pro beschriebenen Informationen angezeigt werden.

【Zusatzinformationen】

Wenn Sie eine Migrationsdatei zurücksetzen und herunterfahren möchten

rollback STEP=Numerischer Wert(Zu welcher Nummer möchten Sie von unten zurückkehren?)Beschreiben und ausführen Sie so


 * Der Boden ist 1.

```terminal
#Wenn Sie die Sekunde von unten zurückrollen möchten
% rails db:rollback STEP=2

Wenn Sie den Status überprüfen, können Sie sehen, dass er von unten nach unten ist

database:App Name_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

Ändern Sie danach die Migrationsdatei auf die gleiche Weise und führen Sie `` `Rails db: migrate``` aus

Ausführungsverfahren zum Hinzufügen / Löschen von Spalten (Muster 1 und 2)

Schreiben Sie zunächst als Voraussetzung `add_column```, um eine Spalte hinzuzufügen, und` remove_column```, um eine Spalte zu löschen.

    #Spalte hinzufügen
    add_column :users, :first_name, :string
    #Spalte löschen
    remove_column :users, :last_name, :string

Muster 1: Wie man in der richtigen Reihenfolge schreibt

① Führen Sie den Namen der `rail g Migrationsdatei aus Der Dateiname lautet `` Spaltenname hinzufügen zu. Tabellenname, zu dem er hinzugefügt wird``. Zu)

#Beim Hinzufügen der Namensspalte zur Benutzertabelle
% rails g migration AddNameToUsers

Inhalt der generierten Datei

db/migrate/20200000000000_add_names_to_users.rb


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

(2) Beschreiben Sie die Informationen in der neu generierten Migrationsdatei.

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

③ Führen Sie `` `Rails db: migrate``` aus

% rails  db:migrate

Muster 2: Schreiben in ein Terminal

`Name der Rail G-Migrationsdatei Hinzufügender Spaltenname: Führen Sie den Typ` aus

#Beschreiben Sie die detaillierten Informationen der hinzuzufügenden Spalte
% rails g migration AddNameToUsers first_name:string last_name:string

Inhalt der generierten Datei (Migrationsdatei wird mit dem Inhalt der beschriebenen Datei generiert)

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

② Führen Sie `` `Rails db: migrate``` aus

% rails  db:migrate

Hinzufügen / Löschen der Referenztypspalte Ausführungsverfahren

Situation: Fügen Sie address_id als externen Schlüssel zur Tabelle Orders hinzu

① Führen Sie `Rails g Migrationsdateiname `aus

# address_Beim Hinzufügen der ID-Spalte zur Tabelle "Bestellungen"
% rails g migration AddIdToOrders

② Schreiben Sie in die generierte Datei

db/migrate/20201014000000_add_id_to_orders.rb


class AddIdToOrders < ActiveRecord::Migration[6.0]
  def change
    #hinzufügen
    add_reference :orders, :address, foreign_key: true
    #Löschen
    remove_reference :orders, :address, foreign_key: true
  end
end

Zusätzliche Punkte -Es muss `add_reference``` sein -Schreibe Foreign_key: true``` (nur wenn nötig) Löschpunkt -Es muss `` remove_reference``` sein

③ Führen Sie `` `Rails db: migrate``` aus

% rails  db:migrate

Das ist alles für die Erklärung! !!

Es ist länger als erwartet, aber ich hoffe, Sie finden diesen Artikel hilfreich. Sobald Sie sich daran gewöhnt haben, ist es einfach. Lernen wir es, damit die Entwicklung reibungslos verläuft! Danke, dass du bis zum Ende zugesehen hast.

Referenz

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

Recommended Posts

Zusammenfassung der grundlegenden Migrationswissensschienen db: Rollback und Hinzufügen / Löschen von Spalten
Zusammenfassung der Grundkenntnisse von Rails, die von progate erworben wurden
Grundkenntnisse in Ruby on Rails
Schienen Hinzufügen einer einfachen Anmeldefunktion
Schienenmigration Spaltenänderungen usw.
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Schienen db: 〇〇 Zusammenfassung
[Rails] Hinzufügen von Spalten / Änderung des Datentyps / Spaltennamens
[Rails] Zusammenfassung des Migrationsbefehls
[Rails] Rails DB-Befehlsübersicht
Zusammenfassung von FileInputStream und BufferedInputStream
Zusammenfassung der Grundfunktionen von ImageJ
[Webpacker] Zusammenfassung der Installation von Bootstrap und jQuery in Rails 6.0