[RUBY] [Rails] Hinzufügen von Spalten / Änderung des Datentyps / Spaltennamens

Einführung

Ein typisches Verfahren zum Hinzufügen von Spalten und zum Ändern von Spaltennamen und Datentypen ist 1 ⃣ Überprüfen Sie den aktuellen Status mit `` `Rails db: migrate: status 2 ⃣ Geben Sie einen Befehl zum Erstellen oder Hinzufügen einer Migrationsdatei zum Terminal ein (der Befehl unterscheidet sich je nach dem Vorgang, den Sie ausführen möchten). 3 ⃣ Beschreiben Sie die Änderungen in der Migrationsdatei (überprüfen Sie bei Hinzufügung nur den Inhalt). 4⃣rails db:migrate``` Ich denke (es tut mir leid, wenn es anders ist). Natürlich denke ich, dass dies auch die richtige Antwort ist. (Ich benutze auch Rails db: rollback) Ich denke, dass die Tabelle jedes Mal, wenn ich den Befehl überprüfe oder einen Tippfehler mache, auf mysteriöse Weise verschwindet ...

** Es scheint eine einfache Möglichkeit zu geben, wenn der Inhalt des Datensatzes gelöscht werden kann (es tut mir leid, wenn Sie es wissen) **

Einfache Methode oben (mehrere Änderungen sind gleichzeitig möglich)

1 ⃣ `Rails db: migrate: status```, um den aktuellen Status zu überprüfen (wenn es kein Problem gibt, gehen Sie zu 2 ⃣) 2 ⃣ Schreiben Sie den Teil der Migrationsdatei, den Sie bereits erstellt haben und den Sie ändern möchten, direkt neu (bitte hinzufügen, wenn Sie ihn hinzufügen möchten). 3 ⃣ Führen Sie `Rails db: migrate: reset``` aus, um den Vorgang abzuschließen Schauen Sie sich schema.rb an!

rails db:migrate:Durch Zurücksetzen der vorhandenen Migrationsdatei**Nutze alles**Und erstellen Sie die Tabelle neu. Daher werden alle umgeschriebenen und hinzugefügten Teile wiedergegeben.(Selbst wenn ein Fehler aufgrund eines Tippfehlers auftritt, wird er größtenteils behoben.)


 Wenn Sie den Datensatz jedoch nicht löschen möchten, müssen Sie ihn je nach Fall ordnungsgemäß verwenden. Geben Sie den Befehl daher sorgfältig ein.

## Beispiel
#### 1 ⃣ Statusprüfung

#### **`rails db:migrate:Statusausführung`**

Es gibt so viele Migrationsdateien wie die Menge, die ausgegeben wird, wenn der Befehl ausgeführt wird, und das Image wird so aussehen, als würden sie alle im nachfolgenden Prozess auf einmal neu erstellt.

Terminal


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

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

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200830060820  Devise create users      #Der Staat wird herauskommen, ob er oben oder unten ist.
   up     20200830062142  Create books             #up ist grundsätzlich migriert
   up     20201101080413  Create book comments
  #Unten weggelassen

2 ⃣ Hinzufügen / Ändern zur Migrationsdatei

Bringen Sie die Migrationsdatei mit den Inhalten, die Sie hinzufügen / ändern möchten, aus dem Ordner ** db / migrate **. Dieses Mal haben sowohl die ** Titelspalte ** als auch die ** Körperspalte **, die zum Posten verwendet werden, falsche Datentypen, daher werde ich das beheben (was für ein Fehler ist boolesch?)

db/migrate/20201115102020_create_books.rb


class CreateBooks < ActiveRecord::Migration[5.2]
  def change
    create_table :books do |t|
      t.integer :title          #← Ich möchte eine Ganzzahl auf einen String setzen
      t.boolean :body           #← Ich möchte den Booleschen Wert in Text ändern
      t.integer :user_id
      t.timestamps
    end
  end
end

Umschreiben (bitte hinzufügen, wenn Sie hinzufügen möchten)

db/migrate/20201115102020_create_books.rb


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

3 ⃣ Rails db: migrate: Zurücksetzen, um DB sofort zu löschen → erstellen

Terminal


$ rails db:migrate:reset

Wenn das Terminal den gleichen Inhalt wie die üblichen Rails db: migrate ausgibt, gibt es wahrscheinlich kein Problem. Lassen Sie uns schema.rb überprüfen und prüfen, ob es ordnungsgemäß geändert / hinzugefügt wurde. Es scheint mühsam zu sein, aber bitte beachten Sie, dass die von Ihnen erstellten Benutzerinformationen (Name usw.) und geposteten Inhalte verschwunden sein sollten.

Bonus

Über den Unterschied zwischen Schienen db: reset und Schienen db: migrat: reset

Beide Befehle sind Befehle, die die Datenbank löschen und neu erstellen, aber es scheint einen großen Unterschied zu geben.

rails db:Beim Zurücksetzen werden die Datenbank und das aktuelle Schema gelöscht.Laden Sie rb und erstellen Sie die DB neu. db/migrate/~.rb scheint nicht verwendet zu werden.



#### **`rails db:migrate:Zurücksetzen ist eine normale Migration (db) nach dem Löschen der Datenbank:migrieren) wird durchgeführt. Das heißt, db/migrate/~.Alle RBS werden vom ältesten zum neuesten ausgeführt.`**

Schließlich andere als die oben genannten Methoden [Klicken Sie hier für Artikel zum Hinzufügen von Spalten] (https://qiita.com/jackie0922youhei/items/09a7b081e40506f07358) Es war hilfreich und im Gegenteil: [Klicken Sie hier, um einen Artikel über den Inhalt zu lesen, wenn Rails db: migrate: reset nicht durchgeführt werden konnte.] (https://qiita.com/mom0tomo/items/a252ff8a42eea00f81b1) Es ist lange her, aber ich persönlich habe das Gefühl, dass es in der DB viele komplizierte Fehler gibt. Ich bin froh, wenn dieser Artikel das Problem löst! (Es tut mir leid, wenn es sich nicht verbessert ...)

Recommended Posts

[Rails] Hinzufügen von Spalten / Änderung des Datentyps / Spaltennamens
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Rails] Ändern Sie den Labelnamen von f.label
[Ruby on Rails] So ändern Sie den Spaltennamen
[Ruby on Rails] Ändern Sie die URL-ID in den Spaltennamen
Verwendung des booleschen Rails-Typs
Zusammenfassung der grundlegenden Migrationswissensschienen db: Rollback und Hinzufügen / Löschen von Spalten
[Schienen] So erstellen Sie eine Tabelle, fügen eine Spalte hinzu und ändern den Spaltentyp
[Ruby on Rails] Einführung der Anfangsdaten
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
So ändern Sie den App-Namen in Rails
[Rails] Temporäre Aufbewahrung von Daten pro Sitzung
Schienen Hinzufügen einer einfachen Anmeldefunktion
[Rails] Ruft den Pfadnamen der URL vor dem Übergang ab und ändert das Linkziel
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
[Rails] Ich habe etwas über Datenbankdatentypen gelernt!
[Schienen] Anzeige von mehrstufigen Strukturdaten über das Auswahlfeld
[Rails] After-Option nützlich, wenn Sie die Reihenfolge der DB-Spalten ändern möchten