Es war mein erstes Mal, dass ich die Rails-Migration berührte, daher werde ich sie kurz als Memorandum of Study aufschreiben.
Die Migration ist eine bequeme und einheitliche Möglichkeit, um kontinuierliche Änderungen an Ihrem Datenbankschema vorzunehmen.
Bereiten Sie die Firmentabelle als Beispiel vor
Spaltenname | Datentyp |
---|---|
id | integer |
name | string |
description | text |
created_at | datetime |
updated_at | datetime |
$ rails g migration CrateCompany
Active Record zeigt automatisch die Ausführungsreihenfolge der Migration mit dem Zeitstempel des Dateinamens an. Die erstellte Datei wird im Verzeichnis "db / migrate" gespeichert.
Erstellte Datei
class CrateCompany < ActiveRecord::Migration[5.2]
def change
end
end
ActiveRecord :: Migration [] enthält die Version.
Sie können Auf und Ab anstelle von Änderungen verwenden. Schreiben Sie den Inhalt beim Migrieren in die Aufwärtsmethode und den Inhalt beim Zurücksetzen in die Abwärtsmethode.
class CrateCompany < ActiveRecord::Migration[5.2]
def up
end
def down
end
end
Erstellen Sie eine Migrationsdatei und geben Sie "Rails DB: Migrate" ein, um sie auszuführen. Um die letzte Änderung rückgängig zu machen, klicken Sie auf "Rails DB: Rollback"
class CrateCompany < ActiveRecord::Migration[5.2]
def change
create_table :companies do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
Wenn Sie diesen Befehl eingeben, wird automatisch etwas wie das oben genannte erstellt
$ rails g migration CrateCompany name:string description:text
class ChangeTableCompany < ActiveRecord::Migration[5.2]
def change
change_table :companies do |t|
t.remove :name
t.string :root_number
t.index :root_number
t.rename :description, :description_note
end
end
end
Bei der obigen Migration wird die Namensspalte entfernt, eine Zeichenfolgenspalte, root_number, erstellt und ein Index hinzugefügt. Und schließlich wird die Beschreibungsspalte umbenannt.
change_column :companies, :root_number, :text
Die Spalte "root_number" des Modellnamens wurde in "text" geändert.
Beachten Sie, dass "change_column" nicht mit der "change" -Methode zurückgesetzt werden kann.
Die "change" -Methode unterstützt dies nicht.
Die von change
unterstützten Migrationsdefinitionen sind
add_column add_foreign_key add_index add_reference add_timestamps change_column_default (Angabe von: from und: to kann nicht weggelassen werden) change_column_null create_join_table create_table disable_extension drop_join_table drop_table (muss einen Block übergeben) enable_extension remove_column (Typ muss angegeben werden) remove_foreign_key (muss zweite Tabelle angeben) remove_index remove_reference remove_timestamps rename_column rename_index rename_table
Wenn Sie ein Rollback durchführen möchten, können Sie "change_column" verwenden, wenn es sich um eine Aufwärts- oder Abwärtsmethode handelt.
class ChangeColumnCompany < ActiveRecord::Migration[5.2]
def up
change_column :companies, :root_number, :text
end
def down
change_column :companies, :root_number, :string
end
end
Ich weiß noch nicht viel über Migration, aber ich möchte es lernen.
Recommended Posts