[RUBY] Fügen Sie der Spalte mit der Migration einen externen Schlüssel hinzu

Ich möchte Inhalte schreiben, die auch Anfänger verstehen können.

Organisieren Sie das Hinzufügen externer Schlüssel zu Spalten für die Modellzuordnung bei der Migration mit Schienen.

Die Voraussetzung ist, dass Sie einen Benutzer mehreren Tweets dieses Benutzers zuordnen möchten.

◉ Fügen Sie der Tabelle einen externen Schlüssel hinzu

Fügen Sie dazu der neu erstellten Tweets-Tabelle eine Spalte mit dem Namen user_id hinzu, um die ID des Benutzers zu speichern, dem der Beitrag gehört.

Fügen Sie in solchen Fällen eine Spalte für den externen Schlüssel mit einem Datentyp namens Referenz hinzu.

Schreiben Sie die Migrationsdatei, die die Tweets-Tabelle erstellt, wie folgt.

class CreateTweets < ActiveRecord::Migration[5.2]
 def change
   create_table :tweets do |t|
     t.string     :text,                     null: false
     t.references :user, foreign_key: true,  null: false

     t.timestamps
   end
 end
end

t.references: user, Foreign_key: true Genau hier.

t.referencees: user erstellt eine Spalte mit dem Namen user_id. Und der Index wird automatisch zugewiesen. Der Index erleichtert die Suche.

Es scheint jedoch einen Nachteil zu geben, dass die Schreibgeschwindigkeit auf Kosten des Vorteils, dass das Lesen und Erfassen von Daten schneller wird, langsamer wird.

Allein damit gibt es keine externe Schlüsselbeschränkung

Foreign_key: Füge true hinzu.

Wenn Sie einer vorhandenen Tabelle einen externen Schlüssel hinzufügen möchten:

class AddColumn < ActiveRecord::Migration[5.0]
 def change
   add_reference :tweets, :user, foreign_key: true
 end
end

Apropos, ...

Sie können eine NOT NULL-Einschränkung hinzufügen, indem Sie null: false schreiben. Setzen Sie diese Einschränkung, wenn Sie NULL nicht im Wert einer Datenbankspalte speichern möchten, dh wenn Sie erwarten, dass der Wert eines Attributs eines Modells enthalten ist.

Recommended Posts

Fügen Sie der Spalte mit der Migration einen externen Schlüssel hinzu
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
So löschen Sie Daten mit einem externen Schlüssel
[Schienen] Spalte zum Entwickeln hinzufügen
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
Fügen Sie der von gradle erstellten Distribution ein Skript hinzu
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Fügen Sie Ihrem Projekt mit Swift PM Pakete hinzu
Ändern Sie den Primärschlüssel der Datenbank (MySQL) in eine beliebige Spalte.
Datei zur JAR-Datei hinzufügen
Migrieren Sie von JUnit 4 zu JUnit 5
Fügen Sie Ihrem Projekt mit Swift PM ein lokales Swift-Paket hinzu
[Rails] So schreiben Sie user_id (externer Schlüssel) in einen starken Parameter